Performance evaluation of various methods to Iterate through a list in java -


this question has answer here:

i have created integer list containing 10 numbers in java.i sum of numbers in list.for have used 4 methods iterate through list , return sum.the code same given below.

public static void main(string[] args) {      list<integer> numbers=arrays.aslist(1,5,10,25,30,17,3,9,11,26);      //using simple loop finding sum of numbers in list     system.out.println(sumofnumbersusingsimpleforloop(numbers));      //using listiterator interface finding sum of numbers in list     system.out.println(sumofnumbersusingiterableinterface(numbers));      //using enhanced loop finding sum of numbers in list     system.out.println(sumofnumbersusingenhancedforloop(numbers));      //using lambda expression finding sum of numbers in list     system.out.println(sumofnumbersusinglambdaexpression(numbers));    } public static int sumofnumbersusingsimpleforloop(list<integer> numbers) {     int sum=0;     for(int i=0;i<numbers.size();i++)     {         sum=sum+numbers.get(i);     }     return sum; } public static int sumofnumbersusingiterableinterface(list<integer> numbers)  {     int sum=0;     listiterator<integer> iterator=numbers.listiterator();     while(iterator.hasnext())     {              sum=sum+iterator.next();      }     return sum; } public static int sumofnumbersusingenhancedforloop(list<integer> numbers)  {     int sum=0;     for(int number:numbers)     {         sum=sum+number;     }     return sum; } public static int sumofnumbersusinglambdaexpression(list<integer> numbers)  {     return numbers.stream().parallel().reduce(0, (e,num)->e+num); } 

all of these methods return 137 result.for me using lambda expression evaluating sum found convenient.however not sure performance if size of list grows high.it useful if can illustrate performance comparison of methods.

in case, sequential stream can't faster loops (the stream loop on list too, overhead). loops should equivalent.

this more case stream example incurs lot more boxing/unboxing operations loop versions. improve with:

return numbers.parallelstream().maptoint(integer::intvalue).sum(); 

a parallel stream may faster if list large (my guess is: above 10k+ elements - below overhead of parallelisation high).

if need performance, should work primitives...


Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - .htaccess mod_rewrite for dynamic url which has domain names -

Website Login Issue developed in magento -