fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. private interface DoMath {
  11. public long runLoop(int count);
  12. }
  13.  
  14. private static final class MethodMath implements DoMath {
  15. private final int getValue() {
  16. return 50;
  17. }
  18.  
  19.  
  20. private final int getProduct(final int source) {
  21. return source * getValue();
  22. }
  23.  
  24. @Override
  25. public final long runLoop(final int count) {
  26. long sum = 0;
  27. for (int i = 0; i < count; i++) {
  28. sum += getProduct(i);
  29. }
  30. return sum;
  31. }
  32. }
  33.  
  34. private static final class StraightMath implements DoMath {
  35. @Override
  36. public final long runLoop(final int count) {
  37. long sum = 0;
  38. for (int i = 0; i < count; i++) {
  39. sum += i * 50;
  40. }
  41. return sum;
  42. }
  43. }
  44.  
  45.  
  46. private static final long timeLoop(final DoMath instance, final int count) {
  47. long start = System.nanoTime();
  48. if (instance.runLoop(count) < 0) {
  49. throw new IllegalStateException();
  50. }
  51. return System.nanoTime() - start;
  52. }
  53.  
  54.  
  55. public static void main(String[] args) {
  56. final int count = 10000;
  57. final int tests = 10000;
  58. long[] mresults = new long[tests];
  59. long[] dresults = new long[tests];
  60. for (int i = 0; i < tests; i++) {
  61.  
  62. mresults[i] = timeLoop(new MethodMath(), count);
  63. dresults[i] = timeLoop(new StraightMath(), count);
  64.  
  65. }
  66.  
  67.  
  68. final int partitions = 100;
  69. final int chunk = mresults.length / partitions;
  70. for (int i = 0; i < partitions; i++) {
  71. long sumDirect = sum(dresults, i * chunk, chunk);
  72. long sumMethod = sum(mresults, i * chunk, chunk);
  73. double improvement = 100.0 * ((sumMethod - sumDirect) / (double)(sumMethod));
  74. System.out.printf("Chunk %3d Methods=%6.3fms Direct=%6.3fms Direct faster by %.3f%%\n",
  75. i, sumMethod / 1000000.0, sumDirect / 1000000.0, improvement);
  76. }
  77.  
  78.  
  79. }
  80.  
  81.  
  82. private static long sum(long[] results, int offset, int chunk) {
  83. long sum = 0;
  84. for (int i = 0; i < chunk; i++) {
  85. sum += results[i + offset];
  86. }
  87. return sum;
  88. }
  89. }
Success #stdin #stdout 0.7s 380800KB
stdin
Standard input is empty
stdout
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%