Skip to content

Instantly share code, notes, and snippets.

@jakobrs
Created March 27, 2024 20:57
Show Gist options
  • Save jakobrs/9d7bdb14be8327bff344af07cf40d522 to your computer and use it in GitHub Desktop.
Save jakobrs/9d7bdb14be8327bff344af07cf40d522 to your computer and use it in GitHub Desktop.
#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