Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...
usa さんにオススメの LL は Ruby (37%) > Python (26%) > Perl (24%) > PHP (13%) です!
らしい。まあそんなとこだろうなあ。
思ったよりPythonとPerlが接近してる。
_ 個人的に好きな順で並べるとRuby > Perl > Python > PHP。
しかし、好みは置いておいて実際に自分が普段使う言語の優先順位だったらオススメされた順になるかな。今からPerlのスクリプトを新規に書く気にはならん。
_ rubyを更新したらm17nのせいでこの日記生成スクリプトが動かなくなっていた。
1.8を使えばいいことはわかってるのだが、頑張って動くようにしてみた。rubyじゃなくてスクリプトの方をいじって。
_ VC9、つまりVisual Studio 2008 β2でtrunkのビルドをなんとなく試してみた。
普通に通った。
試してないけど1.8も問題ないだろう。
_ せっかくなのでいわゆるYARVベンチもやってみた。
以下、読みやすいようにちょっと整形した結果。整形しても読みにくいんだけど。
Elapesed time: 5757.639 (sec) ----------------------------------------------------------- benchmark results: name ruby 1.9.0 (2007-10-01) [i386-mingw32] ruby 1.9.0 (2007-10-01) [i386-mswin32_71] ruby 1.9.0 (2007-10-01) [i386-mswin32_80] ruby 1.9.0 (2007-10-01) [i386-mswin32_90] ruby 1.9.0 (2007-10-01) [i386-mswin32] app_answer 0.160 0.391 0.240 0.241 0.440 app_erb 2.634 3.976 2.333 2.514 4.005 app_factorial 1.813 2.424 1.872 1.813 2.413 app_fib 1.913 5.087 2.634 2.584 4.727 app_mandelbrot 1.432 2.904 1.642 1.653 2.954 app_pentomino 66.266 131.388 74.237 76.881 123.137 app_raise 3.455 4.907 3.285 3.284 4.347 app_strconcat 1.522 2.473 1.332 1.322 2.574 app_tak 2.524 7.090 3.515 3.435 7.410 app_tarai 1.973 5.799 2.653 2.684 5.718 app_uri 3.185 5.047 3.145 3.265 5.127 io_file_create 18.917 18.917 19.098 20.259 19.939 io_file_read 15.342 15.161 14.702 15.722 15.733 io_file_write 6.009 6.179 5.908 5.288 6.058 loop_generator 3.596 4.596 2.844 2.834 3.666 loop_times 4.306 10.365 5.417 5.368 9.844 loop_whileloop 1.402 5.008 3.014 2.073 5.107 loop_whileloop2 0.361 1.041 0.581 0.461 1.101 so_ackermann 1.813 5.578 2.844 2.834 5.308 so_array 4.036 10.665 4.727 4.857 9.744 so_binary_trees 2.463 4.467 2.854 2.554 4.085 so_concatenate 1.972 3.475 1.863 1.873 3.385 so_count_words 29.562 47.379 31.695 32.507 43.312 so_exception 7.110 10.155 8.312 7.901 9.484 so_fannkuch 101.857 136.075 96.219 94.165 117.699 so_fasta 13.670 20.049 14.090 13.700 19.257 so_k_nucleotide 7.762 12.477 8.192 8.643 11.426 so_lists 1.012 2.133 1.111 1.142 2.113 so_mandelbrot 23.374 39.366 21.521 21.471 39.517 so_matrix 1.152 3.054 1.382 1.442 3.035 so_meteor_contest 27.860 50.563 25.997 25.637 50.372 so_nbody 14.571 25.016 14.461 14.260 25.868 so_nested_loop 3.875 9.804 4.677 5.999 9.944 so_nsieve 8.172 21.501 9.574 9.443 19.528 so_nsieve_bits 11.177 23.533 11.767 11.357 22.462 so_object 2.674 6.018 3.175 3.245 5.778 so_partial_sums 16.153 29.533 15.322 13.739 28.321 so_pidigits 11.567 15.522 10.325 10.145 15.892 so_random 1.022 1.592 0.912 0.801 1.812 so_reverse_complement 312.168 308.454 300.322 301.914 303.046 so_sieve 0.290 0.641 0.310 0.291 0.641 so_spectralnorm 19.258 34.039 18.837 19.167 31.135 vm1_block* 5.458 15.221 5.498 6.239 12.589 vm1_const* 0.771 2.793 0.000 0.912 2.804 vm1_ensure* 0.030 0.490 1.032 0.080 0.451 vm1_ivar* 4.056 8.411 3.816 4.386 7.812 vm1_ivar_set* 4.266 8.191 3.736 5.037 8.873 vm1_length* 4.206 6.939 3.425 3.075 7.691 vm1_rescue* 0.201 1.241 0.370 0.291 1.272 vm1_simplereturn* 3.104 8.352 5.438 4.026 7.551 vm1_swap* 0.661 4.255 0.782 1.161 4.657 vm2_array* 6.739 7.532 6.118 6.239 6.530 vm2_case* 0.400 0.922 0.410 0.551 1.052 vm2_eval* 118.890 135.866 125.290 124.940 116.918 vm2_method* 4.987 13.300 6.449 6.549 12.789 vm2_mutex* 3.354 8.002 4.016 4.536 6.490 vm2_poly_method* 6.629 15.943 8.482 9.494 14.721 vm2_poly_method_ov* 0.541 1.773 0.781 0.761 1.232 vm2_proc* 1.642 4.817 1.993 2.123 4.016 vm2_regexp* 3.795 5.709 2.844 2.944 5.959 vm2_send* 0.820 2.144 1.031 1.061 1.934 vm2_super* 1.231 3.446 1.592 1.992 3.045 vm2_unif1* 0.601 1.823 1.071 1.021 1.773 vm2_zsuper* 1.332 5.508 1.692 2.103 3.145 vm3_thread_create_join 0.241 0.260 0.290 0.271 0.330 vm3_thread_mutex 1.022 2.323 1.222 1.292 2.243
_ 大体の傾向としては、速い順に、mingw>>VC8>VC9>>VC6>VC7.1ということになってるぽい(ベンチによっては多少前後はある)。
ええと、つまりmingw版最強ということで。mswin32オワタ。
_ いやまて、evalだけはVC6が最強だな、なんでかよくわからんが。
これからはmswin32版はevalスキー御用達ということでどうだろうか。
というか、真面目に見ると、大体においてmingw版が速いのはそうなんだが、時間がかかるpentomino、fannkuch、reverse_complement、evalなどでは、総じてVC系も健闘してるな。
_ なお、VC6とVC7.1は最適化にバグ(?)があるせいで最適化は控えめになっている(VC8以降はほぼ最高の最適化がかかっている)。
したがってVC6とVC7.1が遅いのはある意味当然。
_ なお、昔iccでrubyをコンパイルしてみた時はVC6のものと比べて相当速かったという記憶がある。
誰か最近のiccとtrunkで試してみませんか。
_ ぼ、ぼくじゃないよ!
いや、r13625は確かに私なんですけど、[ruby-dev:31934]を直したのはまつもとさんのr13612。
被捕捉アンテナ類
[Ant]
[Antenna-Julia]
[Rabbit's Antenna]
[Ruby hotlinks]