Prev Next Index-> contents reference index search external Up-> CppAD utility SpeedTest CppAD-> Install Introduction AD ADFun preprocessor multi_thread utility ipopt_solve Example speed Appendix utility-> ErrorHandler NearEqual speed_test SpeedTest time_test test_boolofvoid NumericType CheckNumericType SimpleVector CheckSimpleVector nan pow_int Poly LuDetAndSolve RombergOne RombergMul Runge45 Rosen34 OdeErrControl OdeGear OdeGearControl CppAD_vector thread_alloc index_sort to_string set_union sparse_rc sparse_rcv SpeedTest-> speed_program.cpp Headings-> Syntax Purpose Motivation Include Test ---..size ---..repeat ---..name first last inc rate Errors Example

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 ) \geq 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.