[racket-dev] writing numbers to files is unfortunately slow
Having just done a pretty trivial microbenchmark of writing a lot of
numbers to file, I discovered that Racket is sadly not as fast as one
would hope here. You can see the program I ran at:
https://gist.github.com/2874695, along with a python program I
compared it to [1]. The Racket program is about twice as slow as the
python program:
[samth at loki:~/tmp/dd plt] time r ints.rkt 10000000
real 0m12.792s
user 0m12.497s
sys 0m0.284s
[samth at loki:~/tmp/dd plt] time python ints.py 10000000
real 0m7.570s
user 0m7.188s
sys 0m0.108s
If we change the program to use `(write-string (number->string ...))`
instead of `(write ...)`, things get much better:
[samth at loki:~/tmp/dd plt] time r ints.rkt 10000000
real 0m8.204s
user 0m8.013s
sys 0m0.184s
I was surprised to see this big a change. Is there (a) some general
improvement lurking here, or (b) some way to get the benefit of the
explicit conversion without writing it out? Alternatively, should the
Typed Racket optimizer start performing this conversion for numbers
when printed/written?
[1] See http://blog.cdleary.com/2012/06/simple-selfish-and-unscientific-shootout/
for background
--
sam th
samth at ccs.neu.edu