/************************************************************************* * Name: * Login: * Precept: * * Description: The test client compares the method for computing square * roots in Java's Math library with our implementation from Program 2.1.1 * which uses Newton's method for the task of computing the sum of the * square roots of the numbers from 0 to N-1. For this quick test, * the Java implementation Math.sqrt() is about 20 times faster than * our Newton.sqrt() (as it should be!). * * Dependencies: None. * * Remarks: This code is from book section 3.2. *************************************************************************/ public class Stopwatch { // start keeps track of the time the stopwatch was created private final long start; // constructors initialize instance variables public Stopwatch() { start = System.currentTimeMillis(); } // return time (in seconds) since this object was created public double elapsedTime() { long now = System.currentTimeMillis(); return (now - start) / 1000.0; } public static void main(String[] args) { int N = Integer.parseInt(args[0]); // time Math library implementation double totalMath = 0.0; Stopwatch swMath = new Stopwatch(); for (int i = 0; i < N; i++) { totalMath += Math.sqrt(i); } double timeMath = swMath.elapsedTime(); // time Newton's method implementation double totalNewton = 0.0; Stopwatch swNewton = new Stopwatch(); for (int i = 0; i < N; i++) { totalNewton += Newton.sqrt(i); } // print results double timeNewton = swNewton.elapsedTime(); StdOut.println(totalNewton/totalMath); StdOut.println(timeNewton/timeMath); } }