fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.TreeMap;
  8.  
  9. class ArrayBenchmark {
  10. public static void main(String[] args) {
  11. List<Integer> arraySizes = Arrays.asList(1, 5, 10, 20,50,60,80, 100,200,500, 1000,2000, 5000,10000);
  12. int numberOfSamples = 200;
  13. Map<Integer, List<int[]>> arraysBySize = new TreeMap<>();
  14. Map<Integer, List<Long>> runTimesBySize = new TreeMap<>();
  15. arraySizes.forEach(size -> {
  16. System.out.printf("Initializing arrays for size %d%n", size);
  17. List<int[]> arrays = new ArrayList<>();
  18. List<Long> runtimes = new ArrayList<>();
  19. for (int j = 0; j < numberOfSamples; j++) {
  20. int[] arr = new int[size];
  21. for (int i = 0; i < size; i++) {
  22. arr[i] = i;
  23. }
  24. arrays.add(arr);
  25. }
  26. arraysBySize.put(size, arrays);
  27. runTimesBySize.put(size, runtimes);
  28. });
  29.  
  30. arraysBySize.entrySet().forEach(entry -> {
  31. int size = entry.getKey();
  32. System.out.printf("Running Benchmark for size %d%n", size);
  33. List<int[]> listOfArrays = entry.getValue();
  34. List<Long> runtimeList = runTimesBySize.get(size);
  35. for (int i = 0; i < numberOfSamples; i++) {
  36. int[] array = listOfArrays.get(i);
  37. int[] target = new int[array.length];
  38. long before = System.nanoTime();
  39. System.arraycopy(array, 0, target, 0, array.length);
  40. long after = System.nanoTime();
  41. runtimeList.add(after - before);
  42. }
  43.  
  44. });
  45.  
  46. System.out.println("Results:");
  47. System.out.println();
  48.  
  49. runTimesBySize.forEach((size, runtimes) -> {
  50.  
  51. System.out.printf("Array size: %d%n", size);
  52. System.out.printf("Total nanos: %d%n", runtimes.stream().mapToLong(Long::longValue).sum());
  53. System.out.printf("Average nanos: %s%n",
  54. runtimes.stream().mapToLong(Long::longValue).average().getAsDouble());
  55.  
  56. System.out.println();
  57. });
  58. }
  59. }
Success #stdin #stdout 0.31s 321280KB
stdin
Standard input is empty
stdout
Initializing arrays for size 1
Initializing arrays for size 5
Initializing arrays for size 10
Initializing arrays for size 20
Initializing arrays for size 50
Initializing arrays for size 60
Initializing arrays for size 80
Initializing arrays for size 100
Initializing arrays for size 200
Initializing arrays for size 500
Initializing arrays for size 1000
Initializing arrays for size 2000
Initializing arrays for size 5000
Initializing arrays for size 10000
Running Benchmark for size 1
Running Benchmark for size 5
Running Benchmark for size 10
Running Benchmark for size 20
Running Benchmark for size 50
Running Benchmark for size 60
Running Benchmark for size 80
Running Benchmark for size 100
Running Benchmark for size 200
Running Benchmark for size 500
Running Benchmark for size 1000
Running Benchmark for size 2000
Running Benchmark for size 5000
Running Benchmark for size 10000
Results:

Array size: 1
Total nanos: 91054
Average nanos: 455.27

Array size: 5
Total nanos: 89571
Average nanos: 447.855

Array size: 10
Total nanos: 95564
Average nanos: 477.82

Array size: 20
Total nanos: 113111
Average nanos: 565.555

Array size: 50
Total nanos: 90842
Average nanos: 454.21

Array size: 60
Total nanos: 92228
Average nanos: 461.14

Array size: 80
Total nanos: 108068
Average nanos: 540.34

Array size: 100
Total nanos: 109814
Average nanos: 549.07

Array size: 200
Total nanos: 141690
Average nanos: 708.45

Array size: 500
Total nanos: 164481
Average nanos: 822.405

Array size: 1000
Total nanos: 281244
Average nanos: 1406.22

Array size: 2000
Total nanos: 520171
Average nanos: 2600.855

Array size: 5000
Total nanos: 1314628
Average nanos: 6573.14

Array size: 10000
Total nanos: 2634441
Average nanos: 13172.205