Skip to content

Instantly share code, notes, and snippets.

@OlivierLi
Created March 29, 2016 14:51
Show Gist options
  • Save OlivierLi/b2b390ddd170e892559e to your computer and use it in GitHub Desktop.
Save OlivierLi/b2b390ddd170e892559e to your computer and use it in GitHub Desktop.
Map VS Vec
#include <map>
#include <vector>
#include <chrono>
#include <iostream>
#include <algorithm>
bool comp( const std::pair<size_t, size_t>& lhs, const std::pair<size_t, size_t>& rhs ) {return lhs.first < rhs.first; }
int _tmain(int argc, _TCHAR* argv[])
{
const size_t count = 1000000;
std::map<size_t, size_t> my_map;
for( size_t i = 0; i < count; ++i )
{
my_map.insert( { i, i } );
}
auto start = std::chrono::high_resolution_clock::now();
for( size_t i = 0; i < count; ++i )
{
auto it = my_map.find( i );
}
auto elapsed = std::chrono::high_resolution_clock::now() - start;
long long microseconds = std::chrono::duration_cast<std::chrono::milliseconds>( elapsed ).count();
std::cout << microseconds << std::endl;
///////////////////////////////////////////////////////////////////////////
std::vector<std::pair<size_t, size_t>> my_vec;
for( size_t i = 0; i < count; ++i )
{
my_vec.emplace_back( i, i );
}
start = std::chrono::high_resolution_clock::now();
for( size_t i = 0; i < count; ++i )
{
auto it = std::lower_bound( my_vec.cbegin(), my_vec.cend(), std::pair<size_t, size_t>{ i, i }, comp);
}
elapsed = std::chrono::high_resolution_clock::now() - start;
microseconds = std::chrono::duration_cast<std::chrono::milliseconds>( elapsed ).count();
std::cout << microseconds << std::endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment