[M3devel] optimization [ was Re: Performance issues with CM3 ]
Tony Hosking
hosking at cs.purdue.edu
Mon Apr 27 03:29:04 CEST 2009
Hmm. Interesting. What about exception scopes?
On 27 Apr 2009, at 11:17, Mika Nystrom wrote:
> Tony Hosking writes:
> ...
>>> With lots of tweaks and adjustments, I now see my code running about
>>> 100% slower under CM3 than the same code does under PM3 (on the
>>> same machine). This is including my typecase hacks, as described
>>> earlier today. I'm guessing most of it is the FreeBSD pthreads
>>> implementation in libc_r + the calls to PushEFrame.
>>
>> Yikes! How much of this is module initialization (startup) time?
>>
>
> Ok, I re-checked just to make sure. As far as I know, exactly the
> same code,
> no initialization overhead (program's already running):
>
> CM3:
>
>> (time-call (lambda()(make-standard-stuff "Example")))
> 1.309586018207483
>>
>
> PM3:
>
>> (time-call (lambda()(make-standard-stuff "Example")))
> 0.5641579627990723
>>
>
> Bear in mind this is pretty close to a worst-case test for the
> "delta" between
> PM3 and CM3. Lots of small procedures, lots of typecases.
>
> Well, actually, I can make it worse. Turn on locking in the Scheme
> environments
> (so that they could be used by multi-threaded interpreters):
>
> CM3:
>
>> (time-call (lambda()(make-standard-stuff "Example")))
> 2.1610950572649017
>>
>
> PM3:
>
>> (time-call (lambda()(make-standard-stuff "Example")))
> 0.6010241508483887
>>
>
> CM3 without my change to RTType:
>
>> (time-call (lambda()(make-standard-stuff "Example")))
> 2.2972461158642545
>>
>
> 250% slower.
>
> But it is very demanding on pthreads. Lots of little procedures,
> lots of typecases, lots of locking. (No contention, though.)
>
> Mika
>
> P.S. the code in question is a scheme-m3 stub generator; it's making
> stub interfaces in the tests above.
More information about the M3devel
mailing list