Run One Speed Test and Print Results
Keywords: run one speed test print results Speedtest syntax purpose motivation include size repeat name first last inc rate errors example

| Prev | Next |  |  |  |  |  |

Run One Speed Test and Print Results
Syntax
`# include <cppad/utility/speed_test.hpp>
` `SpeedTest(Test, first, inc, last)`
Purpose
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` ).
Motivation
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.
Include
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.
Test
The `SpeedTest` argument `Test` is a function with the syntax `
name = Test(size, repeat)
`
size
The `Test` argument `size` has prototype `
size_t size
` It specifies the size for this test.
repeat
The `Test` argument `repeat` has prototype `
size_t repeat
` It specifies the number of times to repeat the test.
name
The `Test` result `name` has prototype `
std::string name
` 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`.
first
The `SpeedTest` argument `first` has prototype `
size_t first
` It specifies the size of the first test problem reported by this call to `SpeedTest`.
last
The `SpeedTest` argument `last` has prototype `
size_t last
` It specifies the size of the last test problem reported by this call to `SpeedTest`.
inc
The `SpeedTest` argument `inc` has prototype `
int inc
` 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 ) ≥ 0
rate
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.
Errors
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
Example
The program speed_program.cpp is an example usage of `SpeedTest`.

Input File: cppad/utility/speed_test.hpp