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

From: Eli Barzilay (eli at barzilay.org)
Date: Thu Jun 24 14:21:13 EDT 2010

Yes, of course.  (See the skeleton code I used for it in the commit message.)

On 2010-06-24, Robby Findler <robby at eecs.northwestern.edu> wrote:
> Thanks for running more timiggs. One last question: your timing tests
> were in a module, not the toplevel, right?
>
> Robby
>
> On Thursday, June 24, 2010, Eli Barzilay <eli at barzilay.org> wrote:
>> On Jun 23, Sam Tobin-Hochstadt wrote:
>>>
>>> Do we really want to remove contracts from code just because they
>>> don't perform as well as hand-written checks?
>>
>> The code in question is about 15 lines; at least I expect such code to
>> run fast enough so I'll use it instead of writing my own 15 lines; the
>> difference is huge (2.5 factor).
>>
>>
>>> Also, did you try just changing the result contract from `void?' to
>>> `any/c'?
>>
>> Did you?
>>
>>
>> On Jun 24, Robby Findler wrote:
>>> A factor of 4 for removing those contracts and turning them into
>>> checks seems suspicious. They should not be that bad. Possibly Eli
>>> made other changes in there too?
>>
>> The 4x factor is overall, mostly due to turning it from a
>> double-linked list to single links.  The contracts factor is still
>> very high: about 2.5x.  Specifically:
>>
>> No contracts (current version):
>>   cpu time: 10341 real time: 10344 gc time: 5156
>>
>> Original contracts (and I removed the checks from the code):
>>   cpu time: 26205 real time: 26207 gc time: 7382
>>
>> Same contracts but using any/c:
>>   cpu time: 25862 real time: 25865 gc time: 7338
>>
>> Using queue/c instead of nonempty-queue/c (add a runtime check instead):
>>   cpu time: 24978 real time: 24981 gc time: 7157
>>
>> Using the struct predicate directly instead of flat-named-contract:
>>   cpu time: 24838 real time: 24841 gc time: 7131
>>
>> --
>>           ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
>>                     http://barzilay.org/                   Maze is Life!
>> _________________________________________________
>>   For list-related administrative tasks:
>>   http://lists.racket-lang.org/listinfo/dev
>>
>


-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                  http://www.barzilay.org/                 Maze is Life!


Posted on the dev mailing list.