[racket-dev] [plt] Push #27767: master branch updated

From: Neil Toronto (neil.toronto at gmail.com)
Date: Fri Nov 15 13:10:46 EST 2013

On 11/15/2013 11:49 AM, Vincent St-Amour wrote:
> At Thu, 14 Nov 2013 20:37:28 -0500,
> Neil Toronto wrote:
>> For the following program, on my computer, the new "random ->
>> unsafe-flrandom" optimization slows down the first loop and speeds up
>> the second:
>>
>> #lang typed/racket
>>
>> (require math/flonum
>>           racket/unsafe/ops)
>>
>> (define g (current-pseudo-random-generator))
>> (define bx (make-flvector 1))
>>
>> (for: ([_  (in-range 5)])
>>    (time (for: ([_  (in-range 5000000)])
>>            (unsafe-flvector-set! bx 0 (random)))))
>> (newline)
>>
>> (for: ([_  (in-range 5)])
>>    (time (for: ([_  (in-range 5000000)])
>>            (unsafe-flvector-set! bx 0 (random g)))))
>
> On my machine, both are faster with the new optimization (first one is
> ~756ms before and ~675 after, second is ~361 before and ~223 after).
> How big is the slowdown you're seeing on the first one?
>
> Unless you're seeing a huge slowdown, I'm not too worried. This new
> optimization moves work from the runtime to Racket code, so as the JIT
> gets better, the new version will get better (which is what happened
> with, e.g., vector bounds checking elimination).

It's a small one: ~410ms before, ~430 after.

>> (I'm going to speed up the math library's samplers by caching the
>> parameter value and using the new `flrandom', but of course that's a
>> separate issue.)
>
> The latest version of Optimization Coach can help you with that. It now
> reports implicit dereferences of `current-pseudo-random-generator'.

Cool!

Neil ⊥


Posted on the dev mailing list.