Skip to content

Instantly share code, notes, and snippets.

@kireal
Created April 22, 2015 22:58
Show Gist options
  • Save kireal/93e6fad17f94549a789b to your computer and use it in GitHub Desktop.
Save kireal/93e6fad17f94549a789b to your computer and use it in GitHub Desktop.
LagNonZero_CExample
#include <iostream>
#include <sys/time.h> // for gettimeofday()
using namespace std;
double r2()
{
return (double)rand() / (double)RAND_MAX ;
}
int main() {
long iter, i;
double x;
double elapsedTime;
double *v;
double LastVal;
timeval t1, t2;
iter = 100000000;
v = (double *)malloc(sizeof(*v)*iter);
for ( i = 0; i < iter; i++ )
{
x = r2();
if ( x > 0.5)
{
v[i] = x;
}
else
{
v[i] = 0;
}
}
// start timer
gettimeofday(&t1, NULL);
// do stuff
LastVal = 0;
for ( i = 0; i < iter; i++ )
{
if ( v[i] == 0)
{
v[i] = LastVal;
}
else
{
LastVal = v[i];
}
}
// stop timer
gettimeofday(&t2, NULL);
// compute and print the elapsed time in millisec
elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms
elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms
cout << elapsedTime << " ms.\n";
for ( i = 0; i < iter; i++ )
{
if ( v[i] == 0 )
{
printf("v[%lu] = %f\n", i , v[i]);
}
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment