From: Mark Probert Date: 2003-01-05T13:06:33+09:00 Subject: A Modest Speedup of Some Benchmarks Hi, Rubyists! I recently buried in my announcement for the new version of ratlast, some info that may be of more general interest. So, I thought I'd change the format and resend it. I hope you don't mind too much. I have also done a little bit of benchmarking of native Ruby and ratlast, the FORTH interpreter as a Ruby extension. To do these benchmarks, I have taken some of the code posted on Doug Bagely's Language Shootout site (http://www.bagley.org/~doug/shootout). I looked at three examples where Ruby performed rather poorly: Sieve of Eratosthenes, Random Number, and Array Access. In each of theses tests, Ruby came in down the list. By running the FORTH versions through ratlast (following the same rules, not using idiomatic code ;-) ), I am seeing a speedup factor of between 5 to 7 times. Here are the results: \begin{code} $ ruby bench_1.rb Count (Ruby) 100 iterations: 1028 Count (ratlast) 100 iterations: 1028 Random (ruby) 100000 iterations: 56.568644262 Random (ratlast) 100000 iterations: 56.568600000 Random (ruby) 1000 iterations: y[0]=1000 y[last]=1000000 Random (ratlast) 1000 iterations: y[0]=1000 y[last]=1000000 -------------------------------------------------- BenchTimer Report: -------------------------------------------------- Array Access (ratlast) 0.56s Array Access (ruby) 2.14s Random Number (ratlast) 0.12s Random Number (ruby) 0.73s Sieve of Eratosthenes (ratlast) 0.64s Sieve of Eratosthenes (ruby) 4.08s -------------------------------------------------- $ ruby -v ruby 1.7.3 (2002-11-17) [i386-mswin32] \end{code} I have yet to check the speed increase if I were to do these benchmarks in C as extensions. I suspect that I would see another x5 or so, though it is very nice to have half this speed without having to compile any additional C code. Given a previous recent thread about the benefits of using bytecode interpreters, I would suggest these figures show what can be done just using fairly straight forward TIL techniques. The ratlast system is not very big or complicated (around 5k lines with glue). A more sophisticated embedded interpreter/compiler could see much greater gains. If you have any questions or suggestions, please feel free to email or post to this group. -mark.