[racket-dev] my '312' this semester, how we compare to others

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Wed May 4 12:04:18 EDT 2011

On May 1, 2011, at 2:58 AM, D Herring wrote:

> On 04/21/2011 01:07 PM, Matthias Felleisen wrote:
>> -B- When it comes to raw computational performance (ignore loading Racket, start from REPL and run a single game -- 10 seconds), my implementation is faster than Python (but barely) and one of the Java implementations. But one Java implementation is 10x faster. My hunch is that our OO system is significantly slower than Java's because we lack types to reduce dispatch overhead. Then again I might be wrong. -- Another possibility is that my extremely heavy use of our wonderful (!) contracts may impose a large overhead. I use mostly ->i and ->m.
> I'd be curious what your timings are with the contract checking disabled.

I have recently reported the revised timings to a small list of core Racketeers, but here is the upshot: 

1. I found a serious performance bug in one of two central methods during a final code revision. 

2. Now the code with contracts runs a game in just over 3s. 

3. Disabling contracts lowers this to just over 2s. 
	(These timings are averages of 30 games.)

4. The Racket implementation is now the second fastest implementation in the bunch. I still believe that the Java implementation (just under 1s without their 'Google' contract) benefits from typed dispatches. 
	(There are no significant numeric computations in this game to affect the run time.) 

-- Matthias

Posted on the dev mailing list.