Web-Benchmarks icon indicating copy to clipboard operation
Web-Benchmarks copied to clipboard

Benchmarking a software implementation of skeletal animation.

Newer numbers, in skinned vertices per second, as of 2011-11-04. Same machine as before. MacOS X Version 10.6.8. 2.53 GHz Intel Core i5 4 GB 1067 MHz DDR3

C++

gcc, SSE intrinsics: 96 Mverts / second

$ g++ -O2 -Wall -ffast-math -o skinning_test skinning_test.cpp
$ ./skinning_test
Skinned vertices per second: 96420454, blah=0.000000

gcc, scalar math: 63 Mverts / second

$ g++ -O2 -Wall -ffast-math -o skinning_test_no_simd skinning_test_no_simd.cpp
$ ./skinning_test_no_simd 
Skinned vertices per second: 63355501, blah=0.000000

clang, SSE intrinsics: 102 Mverts / second

$ clang -O2 -Wall -ffast-math -o skinning_test skinning_test.cpp
$ ./skinning_test
Skinned vertices per second: 101580000, blah=0.000000

clang, scalar math: 63 Mverts / second

$ clang -O2 -Wall -ffast-math -o skinning_test_no_simd skinning_test_no_simd.cpp 
$ ./skinning_test_no_simd 
Skinned vertices per second: 62928175, blah=0.000000

JavaScript

untyped arrays, Chrome 15: 10 Mverts / second typed arrays, Chrome 15: 5.8 Mverts / second

untyped arrays, Firefox 7.0.1: 5.1 Mverts / second typed arrays, Firefox 7.0.1: 8.4 Mverts / second

untyped arrays, Firefox 9 (Aurora, 9.0a2), 2.1 Mverts / second typed arrays, Firefox 9 (Aurora, 9.0a2), 1.9 Mverts / second

Emscripten (Optimized)

After my previous post, Alon Zakai demonstrated how to compile with optimizations when using Emscripten. https://gist.github.com/1343182

$ ./optimized_emscripten.sh

$ ../v8-read-only/d8 skinning_test_no_simd.js
Skinned vertices per second: 226377, blah=0.000000

Chrome 15: Skinned vertices per second: 5184815, blah=0.000000 Firefox 7: Skinned vertices per second: 729270, blah=0.000000 Firefox 9a2: Skinned vertices per second: 734126, blah=0.000000

Emscripten (Unoptimized)

$ python ../emscripten/tools/emmaken.py -Wall -O3 -o skinning_test_no_simd.bc skinning_test_no_simd.cpp 
$ python ../emscripten/emscripten.py skinning_test_no_simd.bc > skinning_test_no_simd.js 

V8 trunk, r9884, 87 Kverts / second

$ ../v8-read-only/d8 skinning_test_no_simd.js 
Skinned vertices per second: 86872, blah=0.000000

Chrome 15: 87 Kverts / second

Firefox 7: 1.0 Mverts / second Firefox 9 (Aurora, 9.0a2): 160 Kverts / second


OLD RESULTS FROM JANUARY 2011:

Current numbers, in skinned vertices per second, on my Macbook Pro:

  • C++: 92.3 million
  • JavaScript (Chrome 8): 3.1 million
  • JavaScript (Firefox 4 beta 8): 4.3 million
  • JavaScript w/ typed arrays (Firefox 4 beta 8): 9.5 million