diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-01-25 17:00:53 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-01-25 17:01:50 -0800 |
commit | fe7fd750cfcd050b7e0eaaeda2e2f55f38f1c774 (patch) | |
tree | 2bb57273827d5b42c2d372bad353b2da029f4ce2 | |
parent | 2877208242cb3dd700d3e15282ef435801342751 (diff) |
improve box2d benchmarking
-rw-r--r-- | tests/box2d/Benchmark.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/tests/box2d/Benchmark.cpp b/tests/box2d/Benchmark.cpp index 0db1d4be..14aa1591 100644 --- a/tests/box2d/Benchmark.cpp +++ b/tests/box2d/Benchmark.cpp @@ -25,6 +25,10 @@ typedef struct { #include <time.h> #include <math.h> +#if EMSCRIPTEN +#include <emscripten.h> +#endif + #include "Box2D/Box2D.h" using namespace std; @@ -53,6 +57,10 @@ result_t measure(clock_t *times) { } int main(int argc, char **argv) { +#if EMSCRIPTEN + emscripten_run_script("if (Module.reportStartedUp) Module.reportStartedUp()"); +#endif + int arg = argc > 1 ? argv[1][0] - '0' : 3; switch(arg) { case 0: return 0; break; @@ -64,6 +72,10 @@ int main(int argc, char **argv) { default: printf("error: %d\\n", arg); return -1; } + // do not split out warmup, do not ignore initial stalls + FRAMES += WARMUP; + WARMUP = 0; + // Define the gravity vector. b2Vec2 gravity(0.0f, -10.0f); @@ -115,12 +127,15 @@ int main(int argc, char **argv) { world.Step(1.0f/60.0f, 3, 3); } - clock_t times[FRAMES]; + clock_t times[FRAMES], min = CLOCKS_PER_SEC * 1000 * 100, max = -1; for (int32 i = 0; i < FRAMES; ++i) { clock_t start = clock(); world.Step(1.0f/60.0f, 3, 3); clock_t end = clock(); - times[i] = end - start; + clock_t curr = end - start; + times[i] = curr; + if (curr < min) min = curr; + if (curr > max) max = curr; #if DEBUG printf("%f :: ", topBody->GetPosition().y); printf("%f\n", (float32)(end - start) / CLOCKS_PER_SEC * 1000); @@ -129,7 +144,7 @@ int main(int argc, char **argv) { result_t result = measure(times); - printf("frame averages: %.3f +- %.3f\n", result.mean, result.stddev); + printf("frame averages: %.3f +- %.3f, range: %.3f to %.3f \n", result.mean, result.stddev, float(min)/CLOCKS_PER_SEC * 1000, float(max)/CLOCKS_PER_SEC * 1000); return 0; } |