This page benchmarks the performance of a collection of matrix libraries most of which are intended for use with WebGL:
glMatrix (v3.4.0, 2023-4-11),
mjs (rev 16, 2010-12-15),
CanvasMatrix,
EWGL_math (rev 32, 2011-03-15),
the math utilities in Google's Closure (svn rev: 1364, 2011-11-3),
tdl (commit: 59d484f, 2011-06-03),
twgl.js (v3.3.0, 2017-05-05),
wgpu-matrix (v1.0.0, 2023-04-1), and
Sylvester (v0.1.3, 2007-07-05).
Benchmarks for each library are run in an iframe. Results measure millions of iterations per second of the target operation.
Library | Multiplication | Translation | Scaling | Rotation (Arbitrary axis) | Rotation (X axis) | Transpose | Inverse | Vector Transformation | Average |
---|---|---|---|---|---|---|---|---|---|
wgpu-matrix-native | |||||||||
wgpu-matrix-float64 | |||||||||
wgpu-matrix | |||||||||
w-alloc | |||||||||
twgl-native | |||||||||
twgl-math-native | |||||||||
twgl-math | |||||||||
twgl-float64 | |||||||||
twgl | |||||||||
t-alloc | |||||||||
mjs | |||||||||
glm-js-gl-matrix | |||||||||
glm-js | |||||||||
glMatrix-native | |||||||||
glMatrix-float64 | |||||||||
glMatrix | |||||||||
closure | |||||||||
Three | |||||||||
TDLMath | |||||||||
TDLFast | |||||||||
Sylvester | |||||||||
DOMMatrix | |||||||||
CanvasMatrix |
Adapted by Stephen Bannasch from the benchmarks Brandon Jones created in his glmatrix library.
Additional improvements by Gregg Tavares.
Sylvester benchmarks by Felix E. Klee.
JavaScript Plotting library: Flotr;
Sortable Table by Andrew Tetlaw.
The source code for these benchmarks can be found here on github. Pull requests quite welcome!