josephg / Chipmunk-js

Port of slembcke/Chipmunk-Physics to Javascript
http://dl.dropbox.com/u/2494815/demo/Joints.html
536 stars 59 forks source link

Emscripten #22

Open josephg opened 11 years ago

josephg commented 11 years ago

Port the C code to emscripten and benchmark it.

robwalch commented 11 years ago

Going the asm.js route or just need to know if it's faster before porting 6.2?

I used the Emscripten compiled box2d.js and really did not like the interface. It's one of the reasons I switched to Chipmunk-js. I think it'll be a great thing to have but I hope it doesn't come at such a heavy cost. It's pretty nice not having to use getters and settings for everything. The other thing is will it really take care of GC given how the library is used....? Can't wait to find out :)

josephg commented 11 years ago

I want to know how much faster it is on firefox, how much slower on chrome and how much bigger it ends up. Especially if V8 ends up implementing the same optimizations, and especially because we have a great benchmarking library in ChipmunkJS.

Shame to hear that we'd need getters & setters for everything, though ChipmunkJS is currently a bit of a gross mixed bag at the moment anyway.

josephg commented 11 years ago

I tried it out. Its 2-3x as much code, but way faster. Chipmunk moves from taking ~8x the time in C to ~1.4x the time. (At least in that test, its only 40% slower) http://chipmunk-physics.net/forum/viewtopic.php?f=1&t=2806&sid=164cfa132f3c828edf9cd0bc9ef0a39f [Edit: sorry, 1.4x, not 1.7x]

nornagon commented 11 years ago

Wow. Worth it!

j

On Sun, Jun 30, 2013 at 4:04 PM, Joseph Gentle notifications@github.comwrote:

I tried it out. Its 2-3x as much code, but way faster. Chipmunk moves from being ~8x slower than C to ~1.7x slower than C.

http://chipmunk-physics.net/forum/viewtopic.php?f=1&t=2806&sid=164cfa132f3c828edf9cd0bc9ef0a39f

— Reply to this email directly or view it on GitHubhttps://github.com/josephg/Chipmunk-js/issues/22#issuecomment-20242802 .

josephg commented 11 years ago

Agree. - Though I'm not sure what the best way to expose the API to JS is. In C, vectors live on the stack not the heap.

All options are bad. :/

josephg commented 11 years ago

@nornagon ping for opinion

nornagon commented 11 years ago

I like option 2 best.

onedayitwillmake commented 10 years ago

Impressive results - it's a shame to lose the nice OOP layer you've added on top - so perhaps there's a way to wrap it (although im sure it'd cost us some, there seems to be plenty of performance to spare (8x!) )

josephg commented 10 years ago

Yeah I agree. Once you have your space set up, way more work happen inside chipmunk than over the chipmunk <-> JS layer.

englercj commented 10 years ago

Hey @josephg have you worked on this at all recently? I am using chipmunk-js in a game engine, and am highly interested in a faster and more up-to-date js port of Chipmunk2D. Any news?

josephg commented 10 years ago

1: http://josephg.com/blog/chipmunkjs-and-emscripten 2: http://josephg.com/blog/chipmunk-in-asm-js

I was playing around with my own low level javascript-style language (since LLJS has very little love) but I haven't had time to work on it.

In short, no news, no updates. If you're keen to take a stab at it, be by guest.