class StrictfpBenchmark { static final int REPEAT = 1000000; private static long defaultMultiplication(int repeat, double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8, double d9) { double result = 1.0; double d = 2.0; int i; long time = - System.currentTimeMillis(); for (i = 0; i < repeat; i++) { result = result * d0 * d1 * d2 * d3 * d4 * d5 * d6 * d7 * d8 * d9; } time += System.currentTimeMillis(); return time; } strictfp private static long strictfpMultiplication(int repeat, double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8, double d9) { double result = 1.0; double d = 2.0; int i; long time = - System.currentTimeMillis(); for (i = 0; i < repeat; i++) { result = result * d0 * d1 * d2 * d3 * d4 * d5 * d6 * d7 * d8 * d9; } time += System.currentTimeMillis(); return time; } private static long defaultDivision(int repeat, double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8, double d9) { double result = 1.0; double d = 2.0; int i; long time = - System.currentTimeMillis(); for (i = 0; i < repeat; i++) { result = result / d0 / d1 / d2 / d3 / d4 / d5 / d6 / d7 / d8 / d9; } time += System.currentTimeMillis(); return time; } strictfp private static long strictfpDivision(int repeat, double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8, double d9) { double result = 1.0; double d = 2.0; int i; long time = - System.currentTimeMillis(); for (i = 0; i < repeat; i++) { result = result / d0 / d1 / d2 / d3 / d4 / d5 / d6 / d7 / d8 / d9; } time += System.currentTimeMillis(); return time; } public static void main(String[] args) { System.out.println("default mult.(msec) : " + defaultMultiplication(REPEAT, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1)); System.out.println("strictfp mult.(msec) : " + strictfpMultiplication(REPEAT, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1)); System.out.println("default division(msec): " + defaultDivision(REPEAT, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1)); System.out.println("strictfp division(msec): " + strictfpDivision(REPEAT, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1)); } }