One week ago ruby-2.0.0-rc2 has been released, so I decided that the time has come to benchmark it again. This release will be compared to ruby-2.0.0-preview1 that I used in my first shooutout and to ruby-1.9.3-p385 that also was tagged not so long ago.
This is my configuration for today:
- OS: OSX 10.8.2
- CPU: 2.2GHz i7
- RAM: 8Gb 1333 MHz DDR3 (yes, I added another 8Gb of RAM)
- HHD: Seagate Momentus XT, 2.5”, SATA 3Gb/s, 7200 rpm, hybrid
Installation
As in previous shooutout, I used head RVM to compile rubies.
1
| |
Then I installed ruby-1.9.3-p385 with:
1
| |
And again with clang I installed ruby-2.0.0-rc2 and reinstalled ruby-2.0.0-preview1:
1 2 3 4 | |
Benchmark
| Benchmark File | Input Size | ruby-2.0.0-rc2 | ruby-2.0.0-preview1 | % | ruby-1.9.3-p385 | % |
|---|---|---|---|---|---|---|
| macro-benchmarks/bm_gzip.rb | 100 | 5.898139 | 5.926785 | -0.49% | 5.793295 | 1.78% |
| macro-benchmarks/bm_hilbert_matrix.rb | 10 | 0.002248 | 0.002446 | -8.81% | 0.002263 | -0.67% |
| macro-benchmarks/bm_hilbert_matrix.rb | 20 | 0.031449 | 0.029781 | 5.3% | 0.029393 | 6.54% |
| macro-benchmarks/bm_hilbert_matrix.rb | 30 | 0.158797 | 0.145988 | 8.07% | 0.143119 | 9.87% |
| macro-benchmarks/bm_hilbert_matrix.rb | 40 | 0.569017 | 0.484416 | 14.87% | 0.464279 | 18.41% |
| macro-benchmarks/bm_hilbert_matrix.rb | 50 | 1.12976 | 1.078184 | 4.57% | 1.028412 | 8.97% |
| macro-benchmarks/bm_hilbert_matrix.rb | 60 | 2.613371 | 2.660835 | -1.82% | 2.389456 | 8.57% |
| macro-benchmarks/bm_mpart.rb | 300 | 0.25475 | 0.233309 | 8.42% | 0.274421 | -7.72% |
| macro-benchmarks/bm_norvig_spelling.rb | 50 | 4.872753 | 5.0403 | -3.44% | 4.689897 | 3.75% |
| macro-benchmarks/bm_parse_log.rb | 100 | 0.674923 | 0.669862 | 0.75% | 0.521391 | 22.75% |
| macro-benchmarks/bm_rcs.rb | 100 | 0.220457 | 0.211456 | 4.08% | 0.32246 | -46.27% |
| macro-benchmarks/bm_sudoku.rb | 1 | 1.930103 | 1.631641 | 15.46% | 1.731047 | 10.31% |
| micro-benchmarks/bm_app_factorial.rb | 5000 | 0.015886 | 0.01652 | -3.99% | 0.016427 | -3.41% |
| micro-benchmarks/bm_app_fib.rb | 30 | 0.185038 | 0.197736 | -6.86% | 0.196805 | -6.36% |
| micro-benchmarks/bm_app_fib.rb | 35 | 2.092091 | 2.164146 | -3.44% | 2.168275 | -3.64% |
| micro-benchmarks/bm_app_mandelbrot.rb | 1 | 0.208827 | 0.202582 | 2.99% | 0.271782 | -30.15% |
| micro-benchmarks/bm_app_pentomino.rb | 1 | 27.048303 | 24.845141 | 8.15% | 25.581593 | 5.42% |
| micro-benchmarks/bm_app_tak.rb | 7 | 0.18192 | 0.144087 | 20.8% | 0.157229 | 13.57% |
| micro-benchmarks/bm_app_tak.rb | 8 | 0.524928 | 0.395904 | 24.58% | 0.450485 | 14.18% |
| micro-benchmarks/bm_app_tak.rb | 9 | 1.393179 | 1.085124 | 22.11% | 1.186779 | 14.82% |
| micro-benchmarks/bm_app_tarai.rb | 3 | 0.63514 | 0.494862 | 22.09% | 0.544555 | 14.26% |
| micro-benchmarks/bm_app_tarai.rb | 4 | 0.771243 | 0.592618 | 23.16% | 0.658834 | 14.58% |
| micro-benchmarks/bm_app_tarai.rb | 5 | 0.929578 | 0.71778 | 22.78% | 0.782982 | 15.77% |
| micro-benchmarks/bm_binary_trees.rb | 1 | 10.65261 | 10.155457 | 4.67% | 10.362107 | 2.73% |
| micro-benchmarks/bm_cal.rb | 500 | 0.056834 | 0.047643 | 16.17% | 0.053104 | 6.56% |
| micro-benchmarks/bm_count_multithreaded.rb | 1 | 0.00568 | 0.004981 | 12.31% | 0.005845 | -2.9% |
| micro-benchmarks/bm_count_multithreaded.rb | 2 | 0.011409 | 0.009752 | 14.52% | 0.011731 | -2.82% |
| micro-benchmarks/bm_count_multithreaded.rb | 4 | 0.023 | 0.019546 | 15.02% | 0.02347 | -2.04% |
| micro-benchmarks/bm_count_multithreaded.rb | 8 | 0.044589 | 0.038692 | 13.23% | 0.048141 | -7.97% |
| micro-benchmarks/bm_count_multithreaded.rb | 16 | 0.090604 | 0.078951 | 12.86% | 0.09512 | -4.98% |
| micro-benchmarks/bm_count_shared_thread.rb | 1 | 0.058058 | 0.047591 | 18.03% | 0.05767 | 0.67% |
| micro-benchmarks/bm_count_shared_thread.rb | 2 | 0.056978 | 0.04866 | 14.6% | 0.057271 | -0.51% |
| micro-benchmarks/bm_count_shared_thread.rb | 4 | 0.057764 | 0.049473 | 14.35% | 0.05737 | 0.68% |
| micro-benchmarks/bm_count_shared_thread.rb | 8 | 0.057708 | 0.050524 | 12.45% | 0.058656 | -1.64% |
| micro-benchmarks/bm_count_shared_thread.rb | 16 | 0.059113 | 0.049737 | 15.86% | 0.059617 | -0.85% |
| micro-benchmarks/bm_dirp.rb | 10000 | 1.620279 | 1.674995 | -3.38% | 1.588381 | 1.97% |
| micro-benchmarks/bm_eval.rb | 1000000 | 7.592945 | 7.275976 | 4.17% | 6.565424 | 13.53% |
| micro-benchmarks/bm_fannkuch.rb | 6 | 0.00202 | 0.002074 | -2.67% | 0.002154 | -6.63% |
| micro-benchmarks/bm_fannkuch.rb | 8 | 0.14873 | 0.146033 | 1.81% | 0.157371 | -5.81% |
| micro-benchmarks/bm_fannkuch.rb | 10 | 19.349195 | 18.788684 | 2.9% | 20.627816 | -6.61% |
| micro-benchmarks/bm_fasta.rb | 1000000 | 10.171999 | 9.812058 | 3.54% | 10.562423 | -3.84% |
| micro-benchmarks/bm_fiber_ring.rb | 10 | 0.000254 | 0.000241 | 5.12% | 0.000222 | 12.6% |
| micro-benchmarks/bm_fiber_ring.rb | 100 | 0.014281 | 0.011411 | 20.1% | 0.012637 | 11.51% |
| micro-benchmarks/bm_fiber_ring.rb | 1000 | 1.607382 | 1.313139 | 18.31% | 1.351695 | 15.91% |
| micro-benchmarks/bm_fractal.rb | 5 | 0.673581 | 0.648193 | 3.77% | 1.313758 | -95.04% |
| micro-benchmarks/bm_gc_array.rb | 1 | 36.017523 | 37.251238 | -3.43% | 36.00949 | 0.02% |
| micro-benchmarks/bm_gc_mb.rb | 500000 | 0.138601 | 0.15435 | -11.36% | 0.144698 | -4.4% |
| micro-benchmarks/bm_gc_mb.rb | 1000000 | 0.295436 | 0.272086 | 7.9% | 0.263429 | 10.83% |
| micro-benchmarks/bm_gc_mb.rb | 3000000 | 0.732519 | 0.924174 | -26.16% | 0.890278 | -21.54% |
| micro-benchmarks/bm_gc_string.rb | 1 | 3.118431 | 3.139099 | -0.66% | 3.090432 | 0.9% |
| micro-benchmarks/bm_knucleotide.rb | 1 | 0.658046 | 0.627207 | 4.69% | 0.658046 | 0.0% |
| micro-benchmarks/bm_list.rb | 1000 | 0.022174 | 0.020341 | 8.27% | 0.022238 | -0.29% |
| micro-benchmarks/bm_list.rb | 10000 | 1.704385 | 1.731841 | -1.61% | 1.70034 | 0.24% |
| micro-benchmarks/bm_lucas_lehmer.rb | 9689 | 3.355614 | 3.353724 | 0.06% | 3.431578 | -2.26% |
| micro-benchmarks/bm_lucas_lehmer.rb | 9941 | 3.613548 | 3.609235 | 0.12% | 3.652255 | -1.07% |
| micro-benchmarks/bm_lucas_lehmer.rb | 11213 | 5.063605 | 5.131472 | -1.34% | 5.09221 | -0.56% |
| micro-benchmarks/bm_lucas_lehmer.rb | 19937 | 27.583165 | 27.666417 | -0.3% | 27.726571 | -0.52% |
| micro-benchmarks/bm_mandelbrot.rb | 1 | 9.134669 | 7.940252 | 13.08% | 15.295332 | -67.44% |
| micro-benchmarks/bm_mbari_bogus1.rb | 1 | 0.018366 | 0.018712 | -1.88% | 0.025003 | -36.14% |
| micro-benchmarks/bm_mergesort.rb | 1 | 0.590678 | 0.678744 | -14.91% | 0.665291 | -12.63% |
| micro-benchmarks/bm_mergesort_hongli.rb | 3000 | 0.853338 | 0.811634 | 4.89% | 1.056501 | -23.81% |
| micro-benchmarks/bm_meteor_contest.rb | 1 | 5.118716 | 4.932317 | 3.64% | 5.504683 | -7.54% |
| micro-benchmarks/bm_monte_carlo_pi.rb | 10000000 | 3.076512 | 2.885072 | 6.22% | 5.228851 | -69.96% |
| micro-benchmarks/bm_nbody.rb | 100000 | 1.105588 | 1.124018 | -1.67% | 2.752928 | -149.0% |
| micro-benchmarks/bm_nsieve.rb | 9 | 2.782204 | 2.65807 | 4.46% | 3.160727 | -13.61% |
| micro-benchmarks/bm_nsieve_bits.rb | 8 | SignalException | 1.639433 | 2.026382 | ||
| micro-benchmarks/bm_observ.rb | 100000 | 0.318541 | 0.296753 | 6.84% | 0.44738 | -40.45% |
| micro-benchmarks/bm_open_many_files.rb | 50000 | 0.511762 | 0.509035 | 0.53% | 0.480673 | 6.07% |
| micro-benchmarks/bm_partial_sums.rb | 2500000 | 2.727878 | 2.623284 | 3.83% | 6.043416 | -121.54% |
| micro-benchmarks/bm_pathname.rb | 100 | 55.650257 | 53.103215 | 4.58% | 54.09524 | 2.79% |
| micro-benchmarks/bm_pi.rb | 1000 | 0.023972 | 0.021412 | 10.68% | 0.024194 | -0.93% |
| micro-benchmarks/bm_pi.rb | 10000 | 1.139524 | 1.12291 | 1.46% | 1.168089 | -2.51% |
| micro-benchmarks/bm_primes.rb | 3000 | 0.011374 | 0.010241 | 9.96% | 0.01197 | -5.24% |
| micro-benchmarks/bm_primes.rb | 30000 | 0.119117 | 0.106067 | 10.96% | 0.126013 | -5.79% |
| micro-benchmarks/bm_primes.rb | 300000 | 1.557874 | 1.392963 | 10.59% | 1.637907 | -5.14% |
| micro-benchmarks/bm_quicksort.rb | 1 | 1.326349 | 1.18862 | 10.38% | 1.342677 | -1.23% |
| micro-benchmarks/bm_read_large.rb | 100 | 2.045111 | 1.783264 | 12.8% | 1.800755 | 11.95% |
| micro-benchmarks/bm_regex_dna.rb | 20 | 2.48229 | 2.387413 | 3.82% | 3.087872 | -24.4% |
| micro-benchmarks/bm_reverse_compliment.rb | 1 | 4.466691 | 4.264983 | 4.52% | 3.858464 | 13.62% |
| micro-benchmarks/bm_simple_connect.rb | 1 | 0.000213 | 0.0002 | 6.1% | 0.000238 | -11.74% |
| micro-benchmarks/bm_simple_connect.rb | 100 | 0.009728 | 0.008528 | 12.34% | 0.008629 | 11.3% |
| micro-benchmarks/bm_simple_connect.rb | 500 | 0.0578 | 0.057107 | 1.2% | 0.055438 | 4.09% |
| micro-benchmarks/bm_simple_server.rb | 1 | 0.000497 | 0.000484 | 2.62% | 0.000777 | -56.34% |
| micro-benchmarks/bm_simple_server.rb | 100 | 0.001924 | 0.002101 | -9.2% | 0.002361 | -22.71% |
| micro-benchmarks/bm_simple_server.rb | 100000 | 1.50862 | 1.395423 | 7.5% | 1.445279 | 4.2% |
| micro-benchmarks/bm_so_ackermann.rb | 7 | 0.060486 | 0.059552 | 1.54% | 0.060172 | 0.52% |
| micro-benchmarks/bm_so_ackermann.rb | 9 | 0.986911 | 0.954938 | 3.24% | 0.971333 | 1.58% |
| micro-benchmarks/bm_so_array.rb | 9000 | 1.569583 | 1.419622 | 9.55% | 2.009882 | -28.05% |
| micro-benchmarks/bm_so_count_words.rb | 100 | 2.782291 | 2.80988 | -0.99% | 2.610662 | 6.17% |
| micro-benchmarks/bm_so_exception.rb | 500000 | 1.126038 | 1.040926 | 7.56% | 7.8969 | -601.3% |
| micro-benchmarks/bm_so_lists.rb | 1000 | 3.180452 | 4.844191 | -52.31% | 4.389144 | -38.0% |
| micro-benchmarks/bm_so_lists_small.rb | 1000 | 0.63703 | 1.203322 | -88.9% | 0.91059 | -42.94% |
| micro-benchmarks/bm_so_matrix.rb | 60 | 0.43461 | 0.38061 | 12.42% | 0.519043 | -19.43% |
| micro-benchmarks/bm_so_object.rb | 500000 | 0.407928 | 0.373456 | 8.45% | 0.441667 | -8.27% |
| micro-benchmarks/bm_so_object.rb | 1000000 | 0.813436 | 0.753687 | 7.35% | 0.888771 | -9.26% |
| micro-benchmarks/bm_so_object.rb | 1500000 | 1.224105 | 1.127278 | 7.91% | 1.321836 | -7.98% |
| micro-benchmarks/bm_so_sieve.rb | 4000 | 7.635486 | 7.482065 | 2.01% | 8.900976 | -16.57% |
| micro-benchmarks/bm_socket_transfer_1mb.rb | 10000 | 0.629441 | 0.606439 | 3.65% | 0.590974 | 6.11% |
| micro-benchmarks/bm_socket_transfer_1mb.rb | 1000000 | 0.614051 | 0.634619 | -3.35% | 0.596968 | 2.78% |
| micro-benchmarks/bm_socket_transfer_1mb_noblock.rb | 10000 | 0.539965 | 0.530718 | 1.71% | 0.53292 | 1.3% |
| micro-benchmarks/bm_socket_transfer_1mb_noblock.rb | 1000000 | 0.539307 | 0.534883 | 0.82% | 0.533949 | 0.99% |
| micro-benchmarks/bm_spectral_norm.rb | 100 | 0.11851 | 0.110427 | 6.82% | 0.166705 | -40.67% |
| micro-benchmarks/bm_string_concat.rb | 10000000 | 1.622169 | 1.485809 | 8.41% | 1.521702 | 6.19% |
| micro-benchmarks/bm_sum_file.rb | 100 | 3.114827 | 2.876831 | 7.64% | 2.996209 | 3.81% |
| micro-benchmarks/bm_word_anagrams.rb | 1 | 2.865581 | 2.81197 | 1.87% | 2.973522 | -3.77% |
| micro-benchmarks/bm_write_large.rb | 100 | 0.588267 | 0.580367 | 1.34% | 0.599393 | -1.89% |
| rdoc/bm_rdoc_against_itself_darkfish.rb | 1 | SystemExit | 8.753191 | 5.413807 | ||
| rdoc/bm_rdoc_against_itself_ri.rb | 1 | SystemExit | SystemExit | 5.334588 |
As you can see, I cannot say that ruby-2.0.0-rc2 is absolutely faster then ruby-2.0.0-preview1 or ruby-1.9.3-p385. Here are best results for ruby-2.0.0-rc2:
macro-benchmarks/bm_hilbert_matrix.rbmicro-benchmarks/bm_app_fib.rbmicro-benchmarks/bm_app_mandelbrot.rbmicro-benchmarks/bm_gc_mb.rbmicro-benchmarks/bm_mergesort.rbmicro-benchmarks/bm_so_lists.rbmicro-benchmarks/bm_so_lists_small.rb
One detail connects all these test, they all are about arrays! Initialization, dupping, pushing, popping, reversing – are faster in RC2.
I don’t know why, but multithreading in RC2 works slower then in preview1, but a bit faster or close to 1.9.3. Network tests are also slower in RC2.
If you want to see results of any other tests – write me, I will try to include them in future shootouts.