Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <iostream>
- #include <algorithm>
- #include <set>
- #include <unordered_set>
- #include <deque>
- #include <chrono>
- #include <random>
- using namespace std::chrono;
- template <typename T, class Z = typename T::value_type>
- T create_set(Z upTo) {
- T t;
- std::mt19937 gen;
- gen.seed(12345);
- for (Z i = 1; i <= upTo; i++) {
- t.insert(gen());
- }
- return t;
- }
- template<typename T>
- void timedFunc(typename T::value_type count) {
- auto startTime = steady_clock::now();
- create_set<T>(count);
- auto endTime = steady_clock::now();
- auto elapsed_ms = duration_cast<milliseconds>(endTime - startTime);
- std::cout << "size=" << count << "\telapsed: " << elapsed_ms.count() << " ms\n";
- }
- struct MyHash {
- std::size_t operator()(int value) const noexcept {
- return value;
- }
- };
- int main() {
- std::vector<int> sizes = { 1, 2, 4, 5, 10 };
- std::cout << "set" << std::endl;
- for (int size : sizes) {
- timedFunc<std::set<int>>(size * 1000'000);
- }
- std::cout << "unordered_set" << std::endl;
- for (int size : sizes) {
- timedFunc<std::unordered_set<int, MyHash>>(size * 1000'000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement