Matrix/Vector coomputations
Opened this issue · 3 comments
GoogleCodeExporter commented
I've adapted the mjs 3D vector/matrix javascript library to 2D.
Link: http://blog.vlad1.com/2010/02/05/mjs-simple-vector-and-matrix-math-for-js/
It's an efficient library that minimizes object allocation and uses native
float arrays provided by WebGL when available, but also gracefully falling back
to javascript arrays.
It might be worthwhile porting all Box2Dweb vector math to use this lib. I
haven't made any benchmarks myself, but here are the ones for the 3D lib
(quoting):
The test is simple: it multiplies two matrices together in a loop 1,000,000
times.
Test Time
mjs, JIT, matrix reuse 140 ms
mjs, JIT, no reuse 533 ms
Sylvester, JIT, no reuse 5,280 ms
mjs, no JIT, matrix reuse 25,833 ms
mjs, no JIT, no reuse 26,681 ms
Sylvester, no JIT, no reuse 41,996 ms
Native C++, SSE2, matrix reuse 71 ms
Native C++, SSE2, no reuse 142 ms
It's a small library, easy to port, but if you're interested, it's already
attached here.
Original issue reported on code.google.com by ushiferr...@gmail.com
on 28 Sep 2010 at 6:05
Attachments:
GoogleCodeExporter commented
Sounds very interesting. Do you think, the perfomance remains just as well, if
I wrap the b2Vec2 class around the library?
Otherwise I have to adjust my converter just for the vector calculations, which
would take a lot of time. Furthermore I would have to change the documentation.
Original comment by Uli.He...@googlemail.com
on 29 Sep 2010 at 3:16
- Added labels: Type-Enhancement
- Removed labels: Type-Defect
GoogleCodeExporter commented
I started rearranging my ActionScript parser. When everything is ready I'll be
able to convert b2Vecs as suggested.
Howevery there are some problems.
The main problem of type-tracking is the variant data type as shown in the
code-snippet:
{{{
var u = new b2Vec2;
f(u);
function f(param:*):void { param.Set(4, 5); };
}}}
my current plan is adding conditions to function bodies if a symbol appears,
which is possibly a member of b2Vec2 (e.g. "Set")
Other suggestions are appreciated.
Original comment by Uli.He...@googlemail.com
on 30 Oct 2010 at 6:47
- Changed state: Accepted
- Added labels: Component-Logic, Performance
GoogleCodeExporter commented
I've got a comparison of the speed of different matrix libraries that work with
WebGL here:
http://stepheneb.github.com/webgl-matrix-benchmarks/matrix_benchmark.html
There are striking differences in the relative performance the when comparing
Chrome and FF. For example the Closure library is fastest on Chrome (not
surprising) but on FF V5 Closure and glMatrix, TDLFast and mjs are all quite
similar in performance.
I'm using the glMatrix library in some projects because it works well AND it
works on both WebGL and non-WebGL-enabled browsers.
Original comment by sbanna...@concord.org
on 15 Aug 2011 at 6:47