High resolution timing

Run Settings
LanguageC++
Language Version
Run Command
#include <algorithm> #include <chrono> #include <functional> #include <iostream> #include <vector> #include <cstdio> using namespace std; template <class Period = chrono::seconds::period, class Func, typename... Args> double timeit(Func f, Args&&... args) { auto start = chrono::high_resolution_clock::now(); f(args...); auto end = chrono::high_resolution_clock::now(); chrono::duration<double, Period> diff = end - start; return diff.count(); } template <class Period = chrono::seconds::period, typename ClassMemFn, typename ClassInst, typename... Args> double timeit(ClassMemFn f, ClassInst instance, Args&&... args) { auto start = chrono::high_resolution_clock::now(); (instance->*f)(args...); auto end = chrono::high_resolution_clock::now(); chrono::duration<double, Period> diff = end - start; return diff.count(); } class Thingy { public: size_t sum_to(int last) { for (int i = 0; i < last; i++) { ints.push_back(i); } return accumulate(ints.begin(), ints.end(), 0); } private: vector<int> ints; }; void foo() { cout << "foo()\n"; } int main() { auto t1 = timeit<std::milli>(foo); printf("%.3fms\n", t1); Thingy t; size_t sum = 0; auto t2 = timeit<std::micro>([&sum, &t]() { sum = t.sum_to(1000); }); cout << "sum is " << sum << "\n"; printf("%.3fμs\n", t2); auto t3 = timeit(&Thingy::sum_to, &t, 42); printf("%.3fs\n", t3); }
Editor Settings
Theme
Key bindings
Full width
Lines