physic engines speed tests
Chris Hager
chris at linuxuser.at
Tue Mar 18 12:48:27 EDT 2008
Hey,
I've now done speed tests with rectangles instead of balls, and here
box2d is performing even better.
http://wiki.laptop.org/go/Physic_Engines/Speed_Tests
Jeremy Fitzhardinge wrote:
> Chris Hager wrote:
>> Hey all,
>>
>> Josh and I now made some speed tests with both 2D physics engines -
>> Box2D and Chipmunk - and here are some results. One warning though:
>> The tests were made with Python, and for Box2D there's a library
>> compiled with swig, whereas Chipmunk's interface is done with ctypes.
>> This may change the results to Box2D's advantage, but is justifiable
>> as our interest right now is which performs better with Python and on
>> the xo laptop.
>>
>> In the end, Box2D performs quite a bit better than Chipmunk, although
>> it has a ways larger library and many more functions. On a XO Laptop
>> (build 650), the Box2D engine can easily handle 50 elements - almost
>> twice what we got from Chipmunk.
>>
>
> Have you done any profiling to see where the time is going? I did
> some investigation about how hard it would be to make Chipmunk use
> 3dnow to get some vectorization; I came to the conclusion that it was
> definitely possible if it helps any of the hotspots. But I haven't
> measured to see where the time is going.
After studying the test results, the hotspot definitely is the drawing
with pygame. If you simply disable the pygame drawing things, the speed
multiplies by 2 or 3.
On my machine, the pygame drawing get's really slow at around 200
elements, on the xo laptop, the framerate drops below 30 with ~ 50 balls
or 18 polygons. Just with the physic calculations and without the
drawing, box2d has full performance (40fps), which only drops with > 60
polygons.
> But as you suggest, my suspicion is that a lot of the time is being
> lost in the python binding, and a higher-level interface would allow
> it to perform better.
I think with SWIG it's maybe the most we can get out of it.
> How do the physics models themselves compare?
The only difference I noticed so far is that Box2D calculates in MKS
(meter-kilo-seconds), and we have to do the translation to pixels by hand.
> J
>
>
More information about the Devel
mailing list