Java Reference
In-Depth Information
61
// create a TimeData object to store times
62
TimeData timeData = new TimeData();
63
64
System.out.printf( " Calculating fibonacci(%d)%n" , n);
65
timeData.start = Instant.now();
66
long fibonacciValue = fibonacci(n);
67
timeData.end = Instant.now();
68
displayResult(n, fibonacciValue, timeData);
69
return timeData;
70
}
71
72
// recursive method fibonacci; calculates nth Fibonacci number
73
private static long fibonacci( long n)
74
{
75
if (n == 0 || n == 1 )
76
return n;
77
else
78
return fibonacci(n - 1 ) + fibonacci(n - 2 );
79
}
80
81
// display fibonacci calculation result and total calculation time
82
private static void displayResult( int n, long value, TimeData timeData)
83
{
84
System.out.printf( " fibonacci(%d) = %d%n" , n, value);
85
System.out.printf(
86
" Calculation time for fibonacci(%d) = %.3f seconds%n" ,
87
n, timeData.timeInSeconds());
88
}
89
90
// display fibonacci calculation result and total calculation time
91
private static double calculateTime(TimeData result1, TimeData result2)
92
{
93
TimeData bothThreads = new TimeData();
94
95
// determine earlier start time
96
bothThreads.start = result1.start.compareTo(result2.start) < 0 ?
97
result1.start : result2.start;
98
99 // determine later end time
100 bothThreads.end = result1.end.compareTo(result2.end) > 0 ?
101 result1.end : result2.end;
102
103 return bothThreads.timeInSeconds();
104 }
105 } // end class FibonacciDemo
Synchronous Long Running Calculations
Calculating fibonacci(45)
fibonacci(45) = 1134903170
Calculation time for fibonacci(45) = 5.884 seconds
Calculating fibonacci(44)
fibonacci(44) = 701408733
Fig. 23.30 | Fibonacci calculations performed synchronously and asynchronously. (Part 3 of 4.)
Search WWH ::




Custom Search