WIth respect, I think this shows nothing :-) 


On Oct 21, 2013, at 2:35 PM, Sam Tobin-Hochstadt <sa...@cs.indiana.edu> wrote:

> On Mon, Oct 21, 2013 at 12:47 PM, Matthias Felleisen
> <matth...@ccs.neu.edu> wrote:
>> 
>> In general, it is a mistaken assumption however that even in a
>> 'managed' language -- such as Java or Racket -- mutation is still
>> faster than de/allocation of short-lived data structures. If you
>> choose to go with 'managed' language, you need to adapt your
>> programming style to the new context.
> 
> Sadly, this assumption is often right for Racket today, even though we
> have a pretty good allocator.  Here's a simple benchmark:
> https://gist.github.com/samth/7088570
> 
> This just passes multiple arguments between two functions in three
> ways: with a cons, with multiple values, and by mutating an mcons
> (plus a direct version with two local variables).  In all cases, it's
> as fast as I can make it, using unsafe operations where appropriate.
> 
> Here are some representative timings:
> 
> [samth@huor:~/sw/plt/racket/collects/racket/match (master) plt] r 
> /tmp/bench.rkt
> 'direct
> cpu time: 40 real time: 44 gc time: 0
> 'cons
> cpu time: 72 real time: 73 gc time: 12
> 'values
> cpu time: 192 real time: 191 gc time: 0
> 'mcons
> cpu time: 48 real time: 51 gc time: 0
> 
> Direct is always fastest, multiple values are very slow, and cons is
> always slower than mcons.  Even if we ignore GC time, the functional
> version is still always slower.
> 
> Sam


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to