#include <vector>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <sys/time.h>
using namespace std;
typedef struct timeval timeval;
timeval start, end;
int main()
{
// 10M elements
vector<int> testVector(10000000);
printf("Filling the vector with 10M elements..\n");
gettimeofday(&start, NULL);
fill(testVector.begin(), testVector.end(), 3);
gettimeofday(&end, NULL);
long long totTimeFill = (end.tv_sec - start.tv_sec) * 1000000
+ (end.tv_usec - start.tv_usec);
printf("using std::fill it took %llu usec or ~ %f sec.\n",
totTimeFill, totTimeFill/1000000.0);
gettimeofday(&start, NULL);
memset(&testVector[0], 3, sizeof(int) * testVector.size());
gettimeofday(&end, NULL);
long long totTimeMemset = (end.tv_sec - start.tv_sec) * 1000000
+ (end.tv_usec - start.tv_usec);
printf("using memset it took %llu usec or ~ %f sec.\n",
totTimeMemset, totTimeMemset/1000000.0);
printf("Memset is %f times faster!\n", totTimeFill/(double)totTimeMemset);
return 0;
}