Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class BenchSimpRad
- {
- public static final int TEST_VALUE = 1274912425; // This will simpilify to 205 root 30337
- static long[] simplify2( long square )
- {
- double outside = 1;
- double inside = square;
- long[] simplified = { 1, square };
- // Check if it's already a perfect square
- outside = Math.sqrt(square);
- if (outside == Math.floor(outside))
- {
- simplified[0] = (long)outside;
- simplified[1] = 1;
- return simplified;
- }
- // Find all the squares that could be factors and see if they are
- long i, sqr;
- for (i = 2, sqr = 4; sqr <= (square / 2); i++, sqr = (i * i))
- {
- // Is this square a factor?
- double in = (double)square / sqr;
- if (in == Math.floor(in))
- {
- simplified[0] = i;
- simplified[1] = (long)in;
- }
- }
- // Otherwise, since it hasn't simplified, return the original radical
- return simplified;
- }
- static long[] simplify4( long square )
- {
- long outside = 1;
- long inside = square;
- long[] simplified = { 1, square };
- // Check if it's already a perfect square
- outside = (long)Math.sqrt(square);
- if ((outside * outside) == square)
- {
- simplified[0] = outside;
- simplified[1] = 1;
- return simplified;
- }
- // Find all the squares that could be factors and see if they are
- for (long factor = 2, sqr = 4; sqr <= (square / 2); factor++, sqr = (factor * factor))
- {
- // Is this square a factor?
- if ((square % sqr) == 0)
- {
- simplified[0] = factor;
- simplified[1] = square / sqr;
- }
- }
- // Otherwise, since it hasn't simplified, return the original radical
- return simplified;
- }
- public static void benchmark2( int iterations )
- {
- long startTime = System.nanoTime();
- for (int i = 0; i < iterations; i++)
- {
- simplify2(TEST_VALUE);
- }
- long endTime = System.nanoTime();
- long avgTime = (endTime - startTime) / iterations;
- System.out.println("SimpRad2 took " + avgTime + "ns per iteration on average over "
- + iterations + " iterations.");
- }
- public static void benchmark4( int iterations )
- {
- long startTime = System.nanoTime();
- for (int i = 0; i < iterations; i++)
- {
- simplify4(TEST_VALUE);
- }
- long endTime = System.nanoTime();
- long avgTime = (endTime - startTime) / iterations;
- System.out.println("SimpRad4 took " + avgTime + "ns per iteration on average over "
- + iterations + " iterations.");
- }
- public static void benchmark2JIT( int iterations )
- {
- for (int i = 0; i < 500; i++)
- {
- simplify2(TEST_VALUE);
- }
- long startTime = System.nanoTime();
- for (int i = 0; i < iterations; i++)
- {
- simplify2(TEST_VALUE);
- }
- long endTime = System.nanoTime();
- long avgTime = (endTime - startTime) / iterations;
- System.out.println("SimpRad2 took " + avgTime + "ns per iteration on average over "
- + iterations + " iterations.");
- }
- public static void benchmark4JIT( int iterations )
- {
- for (int i = 0; i < 500; i++)
- {
- simplify4(TEST_VALUE);
- }
- long startTime = System.nanoTime();
- for (int i = 0; i < iterations; i++)
- {
- simplify4(TEST_VALUE);
- }
- long endTime = System.nanoTime();
- long avgTime = (endTime - startTime) / iterations;
- System.out.println("SimpRad4 took " + avgTime + "ns per iteration on average over "
- + iterations + " iterations.");
- }
- public static void main( String[] args )
- {
- // BENCHMARK SIMPRAD2
- // Run 500 iterations to benchmark without JIT
- benchmark2(50);
- benchmark4(50);
- // Run another 10000 iterations to benchmark with JIT
- benchmark2JIT(10000);
- benchmark4JIT(10000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment