丁稚な日々

Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...

[直前] [最新] [直後] [Top]

Oct.1,2007 (Mon)

Revision: 1.7 (Oct.02,2007 00:09)

[Web] Lightweight Language AHP

_ やってみた。結果は

usa さんにオススメの LL は Ruby (37%) > Python (26%) > Perl (24%) > PHP (13%) です!

らしい。まあそんなとこだろうなあ。
思ったよりPythonとPerlが接近してる。

_ 個人的に好きな順で並べるとRuby > Perl > Python > PHP。
しかし、好みは置いておいて実際に自分が普段使う言語の優先順位だったらオススメされた順になるかな。今からPerlのスクリプトを新規に書く気にはならん。

m17n

_ rubyを更新したらm17nのせいでこの日記生成スクリプトが動かなくなっていた。
1.8を使えばいいことはわかってるのだが、頑張って動くようにしてみた。rubyじゃなくてスクリプトの方をいじって。

[mswin32] VC9とパフォーマンス

_ 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で試してみませんか。

Oct.9,2007 (Tue)

Revision: 1.1 (Oct.09,2007 13:18)

[Web] C99

_ ぼ、ぼくじゃないよ!
いや、r13625は確かに私なんですけど、[ruby-dev:31934]を直したのはまつもとさんのr13612。


被捕捉アンテナ類
[Ant] [Antenna-Julia] [Rabbit's Antenna] [Ruby hotlinks]