Prev Next speed_program.cpp

@(@\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}} }@)@
Example Use of SpeedTest

Running This Program
On a Unix system that includes the g++ compiler, you can compile and run this program by changing into the speed/example directory and executing the following commands
 
     g++ -I../.. speed_program.cpp -o speed_program.exe
     ./speed_program.exe

Program
# include <cppad/utility/speed_test.hpp>

std::string Test(size_t size, size_t repeat)
{     // setup
     double *a = new double[size];
     double *b = new double[size];
     double *c = new double[size];
     size_t i  = size;;
     while(i)
     {     --i;
          a[i] = i;
          b[i] = 2 * i;
     }
     // operations we are timing
     while(repeat--)
     {     i = size;;
          while(i)
          {     --i;
               c[i] = a[i] + b[i];
          }
     }
     // teardown
     delete [] a;
     delete [] b;
     delete [] c;

     // return a test name that is valid for all sizes and repeats
     return "double: c[*] = a[*] + b[*]";
}
int main(void)
{
     CppAD::SpeedTest(Test, 10, 10, 100);
     return 0;
}
Output
Executing of the program above generated the following output (the rates will be different for each particular system):
 
     double: c[*] = a[*] + b[*]
     size = 10  rate = 14,122,236
     size = 20  rate = 7,157,515
     size = 30  rate = 4,972,500
     size = 40  rate = 3,887,214
     size = 50  rate = 3,123,086
     size = 60  rate = 2,685,214
     size = 70  rate = 2,314,737
     size = 80  rate = 2,032,124
     size = 90  rate = 1,814,145
     size = 100 rate = 1,657,828

Input File: speed/example/speed_program.cpp