package my.super.duper.test.package;
import org.apache.commons.lang.ArrayUtils;
import java.util.ArrayList;
import java.util.List;
/**
* Benchmarks conversion from List<Integer> to int[] for different
* size lists using pure java vs Apache Commons ArrayUtils.
*/
public class ArrayUtilsBenchmark
{
public static void main(String[] args)
{
for (int i=5;i<2561;i+=i) {
ArrayUtilsBenchmark testClass = new ArrayUtilsBenchmark();
testClass.test(i);
}
}
private void test(int numElements) {
List<Integer> list1 = new ArrayList<Integer>(numElements);
for (int i=0; i<numElements; i++) {
list1.add(new Integer(i*((int)(Math.random()*100))));
}
System.out.println("Comparison for " + list1.size() + " elements");
long start1 = System.nanoTime();
int[] primList1 = convertPureJava(list1);
final long dur1 = System.nanoTime() - start1;
System.out.println("pure java: " + dur1 + " ns");
long start2 = System.nanoTime();
int[] primList2 = convertArrayUtils(list1);
final long dur2 = System.nanoTime() - start2;
System.out.println("array utils: " + dur2 + " ns");
System.out.println("factor: "+dur2/dur1);
System.out.println("----------------------------");
}
private static int[] convertPureJava(List<Integer> tutorialIdsList)
{
int[] arrayOfInt = new int[tutorialIdsList.size()];
int i = 0;
for (Integer tutId : tutorialIdsList) {
arrayOfInt[i] = tutId;
i++;
}
return arrayOfInt;
}
private static int[] convertArrayUtils(List<Integer> tutorialIdsList)
{
return ArrayUtils.toPrimitive(tutorialIdsList.toArray(new Integer[tutorialIdsList.size()]));
}
}