Prev Next

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@
Run One Speed Test and Print Results

# include <cppad/utility/speed_test.hpp>

The SpeedTest function executes a speed test for various sized problems and reports the results on standard output; i.e. std::cout. The size of each test problem is included in its report (unless first is equal to last ).

It is important to separate small calculation units and test them individually. This way individual changes can be tested in the context of the routine that they are in. On many machines, accurate timing of a very short execution sequences is not possible. In addition, there may be set up time for a test that we do not really want included in the timing. For this reason SpeedTest automatically determines how many times to repeat the section of the test that we wish to time.

The file speed_test.hpp contains the SpeedTest function. This file is included by cppad/cppad.hpp but it can also be included separately with out the rest of the CppAD routines.

The SpeedTest argument Test is a function with the syntax
name = Test(sizerepeat)

The Test argument size has prototype
It specifies the size for this test.

The Test argument repeat has prototype
It specifies the number of times to repeat the test.

The Test result name has prototype
The results for this test are reported on std::cout with name as an identifier for the test. It is assumed that, for the duration of this call to SpeedTest, Test will always return the same value for name . If name is the empty string, no test name is reported by SpeedTest.

The SpeedTest argument first has prototype
It specifies the size of the first test problem reported by this call to SpeedTest.

The SpeedTest argument last has prototype
It specifies the size of the last test problem reported by this call to SpeedTest.

The SpeedTest argument inc has prototype
It specifies the increment between problem sizes; i.e., all values of size in calls to Test are given by
size = first + j * inc
where j is a positive integer. The increment can be positive or negative but it cannot be zero. The values first , last and inc must satisfy the relation @[@ inc * ( last - first ) \geq 0 @]@

The value displayed in the rate column on std::cout is defined as the value of repeat divided by the corresponding elapsed execution time in seconds. The elapsed execution time is measured by the difference in
     (double) clock() / (double) CLOCKS_PER_SEC
in the context of the standard <ctime> definitions.

If one of the restrictions above is violated, the CppAD error handler is used to report the error. You can redefine this action using the instructions in ErrorHandler

The program speed_program.cpp is an example usage of SpeedTest.
Input File: cppad/utility/speed_test.hpp