Skip to content

Instantly share code, notes, and snippets.

@nem0
Last active January 11, 2019 12:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nem0/e25195145b1176afefe5a0b9b513eb2d to your computer and use it in GitHub Desktop.
Save nem0/e25195145b1176afefe5a0b9b513eb2d to your computer and use it in GitHub Desktop.
Perf test
template <typename F>
static void measure(float& avg, float& med, float& min, float& max, F&& func) {
LARGE_INTEGER b, e, f;
enum { ITERS = 10 };
LONGLONG dur[ITERS];
LONGLONG sum = 0;
for (int i = 0; i < 5; ++i) {
func();
}
for (int i = 0; i < ITERS; ++i) {
QueryPerformanceCounter(&b);
func();
QueryPerformanceCounter(&e);
dur[i] = e.QuadPart - b.QuadPart;
sum += e.QuadPart - b.QuadPart;
Sleep(1);
}
std::sort(dur, dur + ITERS);
QueryPerformanceFrequency(&f);
avg = float(double(sum) / double(f.QuadPart) * 1000.0 / ITERS);
med = float(double(dur[ITERS / 2]) / double(f.QuadPart) * 1000.0);
min = float(double(dur[0]) / double(f.QuadPart) * 1000.0);
max = float(double(dur[ITERS - 1]) / double(f.QuadPart) * 1000.0);
char tmp[1024];
sprintf_s(tmp, "avg = %fms\nmed = %fms\nmin = %fms\nmax = %fms\n", avg, med, min, max);
OutputDebugString(tmp);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment