/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { private interface DoMath { public long runLoop(int count); } private static final class MethodMath implements DoMath { private final int getValue() { return 50; } private final int getProduct(final int source) { return source * getValue(); } @Override public final long runLoop(final int count) { long sum = 0; for (int i = 0; i < count; i++) { sum += getProduct(i); } return sum; } } private static final class StraightMath implements DoMath { @Override public final long runLoop(final int count) { long sum = 0; for (int i = 0; i < count; i++) { sum += i * 50; } return sum; } } private static final long timeLoop(final DoMath instance, final int count) { if (instance.runLoop(count) < 0) { } } final int count = 10000; final int tests = 10000; long[] mresults = new long[tests]; long[] dresults = new long[tests]; for (int i = 0; i < tests; i++) { mresults[i] = timeLoop(new MethodMath(), count); dresults[i] = timeLoop(new StraightMath(), count); } final int partitions = 100; final int chunk = mresults.length / partitions; for (int i = 0; i < partitions; i++) { long sumDirect = sum(dresults, i * chunk, chunk); long sumMethod = sum(mresults, i * chunk, chunk); double improvement = 100.0 * ((sumMethod - sumDirect) / (double)(sumMethod)); i, sumMethod / 1000000.0, sumDirect / 1000000.0, improvement); } } private static long sum(long[] results, int offset, int chunk) { long sum = 0; for (int i = 0; i < chunk; i++) { sum += results[i + offset]; } return sum; } }
Standard input is empty
Chunk 0 Methods= 4.361ms Direct= 3.425ms Direct faster by 21.464% Chunk 1 Methods= 2.764ms Direct= 2.769ms Direct faster by -0.192% Chunk 2 Methods= 2.768ms Direct= 2.761ms Direct faster by 0.255% Chunk 3 Methods= 2.774ms Direct= 2.774ms Direct faster by 0.003% Chunk 4 Methods= 2.772ms Direct= 2.771ms Direct faster by 0.041% Chunk 5 Methods= 2.773ms Direct= 2.776ms Direct faster by -0.085% Chunk 6 Methods= 2.759ms Direct= 2.781ms Direct faster by -0.790% Chunk 7 Methods= 2.791ms Direct= 2.785ms Direct faster by 0.187% Chunk 8 Methods= 2.759ms Direct= 2.757ms Direct faster by 0.078% Chunk 9 Methods= 2.758ms Direct= 2.749ms Direct faster by 0.339% Chunk 10 Methods= 2.749ms Direct= 2.756ms Direct faster by -0.267% Chunk 11 Methods= 2.756ms Direct= 2.774ms Direct faster by -0.658% Chunk 12 Methods= 2.757ms Direct= 2.741ms Direct faster by 0.578% Chunk 13 Methods= 2.744ms Direct= 2.758ms Direct faster by -0.521% Chunk 14 Methods= 2.757ms Direct= 2.749ms Direct faster by 0.305% Chunk 15 Methods= 2.751ms Direct= 2.763ms Direct faster by -0.423% Chunk 16 Methods= 2.765ms Direct= 2.757ms Direct faster by 0.267% Chunk 17 Methods= 2.767ms Direct= 3.102ms Direct faster by -12.112% Chunk 18 Methods= 2.751ms Direct= 2.764ms Direct faster by -0.459% Chunk 19 Methods= 2.763ms Direct= 2.742ms Direct faster by 0.771% Chunk 20 Methods= 2.741ms Direct= 2.764ms Direct faster by -0.843% Chunk 21 Methods= 2.743ms Direct= 2.757ms Direct faster by -0.474% Chunk 22 Methods= 2.764ms Direct= 2.741ms Direct faster by 0.848% Chunk 23 Methods= 2.754ms Direct= 2.751ms Direct faster by 0.128% Chunk 24 Methods= 2.756ms Direct= 2.769ms Direct faster by -0.489% Chunk 25 Methods= 2.754ms Direct= 2.761ms Direct faster by -0.246% Chunk 26 Methods= 2.756ms Direct= 2.760ms Direct faster by -0.164% Chunk 27 Methods= 2.770ms Direct= 2.748ms Direct faster by 0.793% Chunk 28 Methods= 2.757ms Direct= 2.747ms Direct faster by 0.392% Chunk 29 Methods= 2.763ms Direct= 2.763ms Direct faster by 0.007% Chunk 30 Methods= 2.755ms Direct= 2.766ms Direct faster by -0.379% Chunk 31 Methods= 2.762ms Direct= 2.749ms Direct faster by 0.487% Chunk 32 Methods= 2.746ms Direct= 2.760ms Direct faster by -0.480% Chunk 33 Methods= 2.765ms Direct= 2.746ms Direct faster by 0.667% Chunk 34 Methods= 2.756ms Direct= 2.770ms Direct faster by -0.527% Chunk 35 Methods= 2.754ms Direct= 2.779ms Direct faster by -0.941% Chunk 36 Methods= 2.743ms Direct= 2.756ms Direct faster by -0.473% Chunk 37 Methods= 2.765ms Direct= 2.743ms Direct faster by 0.797% Chunk 38 Methods= 2.747ms Direct= 2.758ms Direct faster by -0.378% Chunk 39 Methods= 2.761ms Direct= 2.755ms Direct faster by 0.222% Chunk 40 Methods= 2.752ms Direct= 2.761ms Direct faster by -0.345% Chunk 41 Methods= 2.750ms Direct= 2.754ms Direct faster by -0.167% Chunk 42 Methods= 2.753ms Direct= 2.762ms Direct faster by -0.330% Chunk 43 Methods= 2.749ms Direct= 2.767ms Direct faster by -0.683% Chunk 44 Methods= 2.765ms Direct= 2.752ms Direct faster by 0.466% Chunk 45 Methods= 2.744ms Direct= 2.761ms Direct faster by -0.594% Chunk 46 Methods= 2.761ms Direct= 2.741ms Direct faster by 0.733% Chunk 47 Methods= 2.752ms Direct= 2.760ms Direct faster by -0.295% Chunk 48 Methods= 2.758ms Direct= 2.760ms Direct faster by -0.071% Chunk 49 Methods= 2.763ms Direct= 2.741ms Direct faster by 0.808% Chunk 50 Methods= 2.741ms Direct= 2.765ms Direct faster by -0.895% Chunk 51 Methods= 2.751ms Direct= 2.748ms Direct faster by 0.123% Chunk 52 Methods= 2.756ms Direct= 2.764ms Direct faster by -0.296% Chunk 53 Methods= 2.750ms Direct= 2.755ms Direct faster by -0.185% Chunk 54 Methods= 2.754ms Direct= 2.756ms Direct faster by -0.091% Chunk 55 Methods= 2.758ms Direct= 2.751ms Direct faster by 0.243% Chunk 56 Methods= 2.741ms Direct= 2.759ms Direct faster by -0.667% Chunk 57 Methods= 2.763ms Direct= 2.741ms Direct faster by 0.791% Chunk 58 Methods= 2.747ms Direct= 2.757ms Direct faster by -0.391% Chunk 59 Methods= 2.760ms Direct= 2.741ms Direct faster by 0.710% Chunk 60 Methods= 2.746ms Direct= 2.765ms Direct faster by -0.703% Chunk 61 Methods= 2.762ms Direct= 2.747ms Direct faster by 0.553% Chunk 62 Methods= 2.749ms Direct= 2.757ms Direct faster by -0.264% Chunk 63 Methods= 2.761ms Direct= 2.741ms Direct faster by 0.727% Chunk 64 Methods= 2.741ms Direct= 2.777ms Direct faster by -1.308% Chunk 65 Methods= 2.759ms Direct= 2.741ms Direct faster by 0.654% Chunk 66 Methods= 2.746ms Direct= 2.757ms Direct faster by -0.394% Chunk 67 Methods= 2.750ms Direct= 2.754ms Direct faster by -0.134% Chunk 68 Methods= 2.757ms Direct= 2.748ms Direct faster by 0.311% Chunk 69 Methods= 2.755ms Direct= 2.755ms Direct faster by -0.007% Chunk 70 Methods= 2.750ms Direct= 2.753ms Direct faster by -0.102% Chunk 71 Methods= 2.749ms Direct= 2.762ms Direct faster by -0.450% Chunk 72 Methods= 2.750ms Direct= 2.754ms Direct faster by -0.132% Chunk 73 Methods= 2.756ms Direct= 2.748ms Direct faster by 0.266% Chunk 74 Methods= 2.755ms Direct= 2.748ms Direct faster by 0.255% Chunk 75 Methods= 2.748ms Direct= 2.757ms Direct faster by -0.304% Chunk 76 Methods= 2.763ms Direct= 2.743ms Direct faster by 0.751% Chunk 77 Methods= 2.758ms Direct= 2.752ms Direct faster by 0.237% Chunk 78 Methods= 2.743ms Direct= 2.775ms Direct faster by -1.187% Chunk 79 Methods= 2.760ms Direct= 2.754ms Direct faster by 0.231% Chunk 80 Methods= 2.754ms Direct= 2.755ms Direct faster by -0.032% Chunk 81 Methods= 2.751ms Direct= 2.759ms Direct faster by -0.276% Chunk 82 Methods= 2.757ms Direct= 2.756ms Direct faster by 0.011% Chunk 83 Methods= 2.760ms Direct= 2.748ms Direct faster by 0.429% Chunk 84 Methods= 2.759ms Direct= 2.756ms Direct faster by 0.110% Chunk 85 Methods= 2.743ms Direct= 2.752ms Direct faster by -0.345% Chunk 86 Methods= 2.750ms Direct= 2.757ms Direct faster by -0.257% Chunk 87 Methods= 2.756ms Direct= 2.747ms Direct faster by 0.338% Chunk 88 Methods= 2.748ms Direct= 2.762ms Direct faster by -0.512% Chunk 89 Methods= 2.755ms Direct= 2.759ms Direct faster by -0.150% Chunk 90 Methods= 2.758ms Direct= 2.748ms Direct faster by 0.334% Chunk 91 Methods= 2.753ms Direct= 2.752ms Direct faster by 0.048% Chunk 92 Methods= 2.741ms Direct= 2.760ms Direct faster by -0.690% Chunk 93 Methods= 2.769ms Direct= 2.746ms Direct faster by 0.809% Chunk 94 Methods= 2.743ms Direct= 2.758ms Direct faster by -0.549% Chunk 95 Methods= 2.764ms Direct= 2.748ms Direct faster by 0.563% Chunk 96 Methods= 2.763ms Direct= 2.756ms Direct faster by 0.250% Chunk 97 Methods= 2.752ms Direct= 2.762ms Direct faster by -0.339% Chunk 98 Methods= 2.763ms Direct= 2.753ms Direct faster by 0.385% Chunk 99 Methods= 2.755ms Direct= 2.755ms Direct faster by 0.007%