Created
March 27, 2024 20:57
-
-
Save jakobrs/9d7bdb14be8327bff344af07cf40d522 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdlib> | |
#include <iostream> | |
#include <chrono> | |
#include <random> | |
template <typename Fn> | |
void measure(Fn &&fn) { | |
auto before = std::chrono::system_clock::now(); | |
auto res = std::forward<Fn>(fn)(); | |
auto after = std::chrono::system_clock::now(); | |
auto time = std::chrono::duration_cast<std::chrono::milliseconds>(after - before); | |
std::cout << "Elapsed: " << time.count() << '\n'; | |
std::cout << "Result: " << res << '\n'; | |
std::cout << std::flush; | |
} | |
int main() { | |
std::srand(std::time(0)); | |
measure([]() { | |
uint64_t sum_1 = 0; | |
for (uint64_t i = 0; i < (COUNT); i++) { | |
sum_1 += std::rand() % 101; | |
} | |
return sum_1; | |
}); | |
measure([=]() { | |
uint64_t sum_2 = 0; | |
std::mt19937 rng{std::random_device{}()}; | |
std::uniform_int_distribution<int32_t> distr{0, 100}; | |
for (uint64_t i = 0; i < (COUNT); i++) { | |
sum_2 += distr(rng); | |
} | |
return sum_2; | |
}); | |
measure([]() { | |
uint64_t sum_2 = 0; | |
std::minstd_rand rng{std::random_device{}()}; | |
std::uniform_int_distribution<int32_t> distr{0, 100}; | |
for (uint64_t i = 0; i < (COUNT); i++) { | |
sum_2 += distr(rng); | |
} | |
return sum_2; | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment