import java.util.Arrays; import java.util.Random; public class EfficiencyTest { private static final int NUMBER_OF_TESTS = 10000; private static long startTime = -1; public static void startTimer() { EfficiencyTest.startTime = System.nanoTime(); } /** pre: startTimer has been called and EfficiencyTest.startTime != -1 */ public static long stopTimer() { long start = EfficiencyTest.startTime; /* Reset the startTime */ EfficiencyTest.startTime = -1; return System.nanoTime() - start; } /* pre: array.length >= 1 */ public static long average(long[] array) { long average = array[0]; for (int i = 1; i < array.length; i++) { average = (average * i + array[i]) / (i+1); } return average; } public static void prints1() { System.out.println("hello"); } public static void prints2() { System.out.print("h"); System.out.print("e"); System.out.print("l"); System.out.print("l"); System.out.println("o"); } public static void main(String[] args) { long[] times1 = new long[EfficiencyTest.NUMBER_OF_TESTS]; long[] times2 = new long[EfficiencyTest.NUMBER_OF_TESTS]; for (int i = 0; i < EfficiencyTest.NUMBER_OF_TESTS; i++) { /* Test prints1 */ EfficiencyTest.startTimer(); prints1(); times1[i] = EfficiencyTest.stopTimer(); /* Test prints2 */ EfficiencyTest.startTimer(); prints2(); times2[i] = EfficiencyTest.stopTimer(); } System.out.println("prints1 average run time is " + average(times1) + " ns."); System.out.println("prints2 average run time is " + average(times2) + " ns."); } }