Advertisement
Guest User

Profiling of Euler #2

a guest
Jan 10th, 2015
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.62 KB | None | 0 0
  1. // For http://codereview.stackexchange.com/a/77129/58964
  2. // Profile with:
  3. // for ((i=0; i<100; i++)) ; do java FiboSmart ; done | grep 'Time used:' | sed 's/Time used: //' | sort -n | head -n 1
  4. public class FiboSmart {
  5.     private static final long MAX_NUM = 4000000;
  6.     private static final int RUNS = 100;
  7.     public static void main(String[] args) {
  8.         final long START = System.nanoTime();
  9.         long result = 0;
  10.         for (int i = 0; i < RUNS; i++)
  11.             result = function1();
  12.         //long even1 = 0, even2 = 0, even = 2;
  13.  
  14.         //while (even <= MAX_NUM) {
  15.         //    result += even;
  16.         //    even2 = even1;
  17.         //    even1 = even;
  18.         //    even = even1 * 4 + even2;
  19.         //}
  20.         final long END = System.nanoTime();
  21.         final long TIME = (END - START) / RUNS;
  22.         System.out.format("Result: %d%nTime used: %d%n", result, TIME);
  23.     }
  24.  
  25.     public static long function1() {
  26.         long result = 0;
  27.  
  28.         long odd1, odd2 = 1, even = 2;
  29.  
  30.         while (even <= MAX_NUM) {
  31.             result += even;
  32.             //empty();
  33.             odd1 = even + odd2;
  34.             odd2 = odd1 + even;
  35.             even = odd2 + odd1;
  36.         }
  37.         return result;
  38.     }
  39.     public static void empty() {
  40.     }
  41.     public static long function2() {
  42.         long result = 0;
  43.  
  44.         long prevPrevEven, prevEven = 0, even = 2;
  45.  
  46.         while (even <= MAX_NUM) {
  47.             result += even;
  48.             //empty();
  49.             prevPrevEven = prevEven;
  50.             prevEven = even;
  51.             even = (even << 2) + prevPrevEven;
  52.         }
  53.         return result;
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement