Skip to content

Instantly share code, notes, and snippets.

@shelomentsevd
Last active February 27, 2017 11:20
Show Gist options
  • Save shelomentsevd/9b5764bacd2698056097d7c683dbf2c0 to your computer and use it in GitHub Desktop.
Save shelomentsevd/9b5764bacd2698056097d7c683dbf2c0 to your computer and use it in GitHub Desktop.
#include<iostream>
#include<list>
#include<vector>
#include<random>
#include<chrono>
#include<algorithm>
using namespace std;
int main()
{
random_device rd;
mt19937 rng(rd());
uniform_int_distribution<int> uni(0, 5);
vector<int> iVector;
list<int> iList;
for(int i = 0; i < 10000000; ++i)
{
int number = uni(rng);
iVector.push_back(number);
iList.push_back(number);
}
{
auto start = std::chrono::steady_clock::now();
int listSum = accumulate(iList.begin(), iList.end(), 0);
auto end = std::chrono::steady_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
cout << "List: " << elapsed.count() << " nanoseconds.\n";
}
{
auto start = std::chrono::steady_clock::now();
int vectorSum = accumulate(iVector.begin(), iVector.end(), 0);
auto end = std::chrono::steady_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
cout << "Vector: " << elapsed.count() << " nanoseconds.\n";
}
{
auto start = std::chrono::steady_clock::now();
int listSum = 0;
for(auto & i: iList)
listSum += i;
auto end = std::chrono::steady_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
cout << "List cycle: " << elapsed.count() << " nanoseconds.\n";
}
{
auto start = std::chrono::steady_clock::now();
int vectorSum = 0;
for(auto & i: iVector)
vectorSum += i;
auto end = std::chrono::steady_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
cout << "Vector cycle: " << elapsed.count() << " nanoseconds.\n";
}
{
auto start = std::chrono::steady_clock::now();
int vectorSum = 0;
int * pArray = &iVector[0];
for(int i = 0; i < iVector.size(); ++i)
vectorSum += (*(pArray + i));
auto end = std::chrono::steady_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
cout << "Vector cycle2: " << elapsed.count() << " nanoseconds.\n";
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment