next up previous contents
Next: Timing Results Up: Experimental Analysis Previous: Dyadic digit swell

Profiling Results

 

Profiling experiments were performed with a variety of computations for both time and memory usage. The graph in figure 7.4 is an automatically generated summary of a profiling report generated using the Glasgow Haskell Compiler. The profiler also produces textual reports.

The graph shows the amount memory used by different functions against time. The function sbIntDiv performs division of a signed binary stream by an integer and sbAv is the signed binary stream average operation. The calculation performed here is computation of ln(2) to a precision of 20 decimal digits.

In this example, the profiler shows that the majority of the memory is consumed during the signed binary stream average and division by an integer operations.

This and other experiments show that the majority of the time and memory are consumed in functions like the signed binary average, division of a signed binary stream by an integer, and a few other basic operations. This is not in itself surprising as this operation is used extensively in almost all other algorithms. It suggests, however, that the majority of the execution time is spent in a very small portion of the code, and that significant performance gains might be obtained by optimising a relatively small amount of the implementation.


  
Figure 7.4: Example memory usage profiling graph, generated by the GHC profiler applied to the implemented calculator computing the expression $\ln(2)$ to 20 decimal digits
\begin{figure}
\begin{center}

\includegraphics [width=13cm]{p_calc.ps}\end{center}\end{figure}


next up previous contents
Next: Timing Results Up: Experimental Analysis Previous: Dyadic digit swell
Martin Escardo
5/11/2000