Statistics for E-Commerce system

Ruslan Shevchenko rssh at gradsoft.com.ua
Fri Apr 24 11:20:04 PDT 2009


Great !
 Also interesting that rethrows/all catchs also vary a lot.

And how many time require processing of all of this ?

// I will try to fix elvis, loop and add loop-indexes tomorrow.


> 1.3 million LOC
> Old sourcebase, lots of refactoring down the years
> Java EE, Servlets but not EJB
> Two parts - low level utilities, and main E-commerce codebase
>
> Low level utilities
> -------------------------
> all catchs             : 549
> all conditionals       : 297
> all ifs                : 1521
> all integer literals   : 4863
> big integer literals(undescores): 326
> byte literal           : 0
> catch in finally       : 14
> elvis                  : 86  --> correct value 36
> instanceof switch      : 27
> loop with remove       : 5  --> correct value 33
> multi catch            : 31
> object switch          : 81
> rethrow clause         : 271
> string in switch       : 23
> Files:564
>
>  while \(.+?\.hasNext\(\)\)
> all hasNext() while    : 39
>  for \(Iterator
> all iterator() for     : 68
>  for \(int
> all int for            : 375
>  for \(
> all for                : 631
>
> Elvis-conditional = 36/297 = 12.1%
> Loop-remove       = 33/631 =  5.2%
> Multi-catch         = 31/549 = 5.6%
>
>
> Main E-Commerce system
> ---------------------------------------
> (counted in three parts to avoid out of memory in the tool, and to
> demonstrate how different types of code affect the results)
> Main code (most of the business logic:
> all catchs             : 2592
> all conditionals       : 2185
> all ifs                : 7431
> all integer literals   : 45473
> big integer literals(undescores): 5738
> byte literal           : 0
> catch in finally       : 35
> elvis                  : 600  --> correct value ?
> instanceof switch      : 159
> loop with remove       : 88  --> correct value 430
> multi catch            : 39
> object switch          : 379
> rethrow clause         : 859
> string in switch       : 117
> Files:5822
>
> Sub part 1 (code generated beans):
> all catchs             : 753
> all conditionals       : 10244
> all ifs                : 4955
> all integer literals   : 145405
> big integer literals(undescores) : 25957
> byte literal           : 0
> catch in finally       : 0
> elvis                  : 4058  --> correct value, probably 0
> instanceof switch      : 9
> loop with remove       : 0  --> correct value 0
> multi catch            : 0
> object switch          : 15
> rethrow clause         : 1
> string in switch       : 0
> Files:1553
>
> Sub part 2 (presentation layer):
> all catchs             : 370
> all conditionals       : 366
> all ifs                : 1622
> all integer literals   : 2632
> big integer literals(undescores) : 39
> byte literal           : 0
> catch in finally       : 6
> elvis                  : 33
> instanceof switch      : 47
> loop with remove       : 8  --> correct value 20
> multi catch            : 0
> object switch          : 112
> rethrow clause         : 61
> string in switch       : 35
> Files:1160
>
>  while \(.+?\.hasNext\(\)\)
> all hasNext() while    : 256
>  for \(Iterator
> all iterator() for     : 536
>  for \(int
> all int for            : 4530 *not all loops around lists
>  for \(
> all for                : 8248 *not all loops around lists
>
> Elvis-conditional = ?/2185 =
> Loop-with-remove  = 450/8248 = 5.5%
> Multi-catch  = 39/3715 = 1.0%
>
>
> The Elvis number currently needs manual work to calculate, so I passed
> for the size of the main sourcebase. However, 12% of all conditionals
> in the low level library is a reasonable number of hits.
>
> The loop-with-remove is between 5 and 5.5% (of all loops, which
> includes loops around things other than lists, like strings). I can't
> easily determine how often the loop index is needed, or whether it is
> the first/last loop, each of which would push up the %age.
>
> Multi-catch has about 1% of all catch statements in the main
> E-Commerce, but 5.6% in the low level libraries. This perhaps
> indicates where the sweet spot for the feature is - libraries and
> frameworks.
>
> Stephen
>
>





More information about the coin-dev mailing list