ruby の懸案事項
DESCRIPTION
Ruby の懸案事項を説明し、我こそはと思う人の出現を祈ります。TRANSCRIPT
Ruby の懸案事項Kenta Murata
2011.02.20 Ruby Workshop Sapporo
12011年2月20日日曜日
自己紹介
22011年2月20日日曜日
• 村田 賢太 a.k.a @mrkn
• Ruby コミッタ
• Ruby 札幌
• 高専カンファレンス副代表
• 株式会社ジェネティックラボ社内SE
• 趣味数学者,趣味物理学者
32011年2月20日日曜日
AD
42011年2月20日日曜日
2010年3月1日月曜日 52011年2月20日日曜日
Hokuriku.rb x 高専カンファレンス
62011年2月20日日曜日
Hokuriku.rb x 高専カンファレンス
• 3月20日
• 石川工業高等専門学校• @igaiga555, 五十嵐邦明 (株式会社万葉)
• @june29, 大和田純 (サイジニア株式会社)
• @mrkn, 村田賢太 ← it’s me!!!
72011年2月20日日曜日
Ruby の懸案事項Kenta Murata
2011.02.20 Ruby Workshop Sapporo
82011年2月20日日曜日
test-all の並列化• test-all が遅い。
• 並列化されていれば、ウェイトなどで時間がかかるテストケースの裏で、次々と他のテストケースを実行できる。
• あとで。
92011年2月20日日曜日
ext/ 以下の並列ビルド
• ext/extmk.rb はひとつひとつビルドしていく。
• make -j 4 とかやっても ext 以下だけ無意味。
• extmk.rb の中で -j n オプションを受け入れ、n
個の拡張ライブラリを並列ビルドさせたい。
102011年2月20日日曜日
MacRuby で gem が遅い件
• gem list で比較すると2倍程度遅い。
• どこが遅いかプロファイルを取る。
• 遅い箇所を改善する。
112011年2月20日日曜日
正規表現マッチが遅いらしい
• Oniguruma が遅いらしい。
• http://firefly.cr.ie.u-ryukyu.ac.jp/~shinya/xhago/
• Oniguruma を高速化したい。
• http://twitter.com/#!/yukihiro_matz/status/35521472273321984
122011年2月20日日曜日
SSL/TLS ライブラリ
• openssl にしか対応していない。
• 世には GnuTLS や CryptoAPI なども存在する。
• ライセンスやプラットフォームなどの要件に応じて選択できるようにしたい。
132011年2月20日日曜日
readline6 問題• readline6 は GPL3
• ruby とライセンス的に非互換
• ところが libedit はそのままではウンコ
• libedit でも readline のように使えるよう、拡張ライブラリ readline を改造したい。
142011年2月20日日曜日
test-all 並列化について
152011年2月20日日曜日
Ruby のテスト• Ruby 本体を弄って、その変更点をリポジトリに反映させるにはテストを実施する必要がある
• 既存のテスト全部 + 変更点に関するテスト
• make test-all で実行するのだが、多すぎて時間がかかってしまう
162011年2月20日日曜日
@sora_h
172011年2月20日日曜日
182011年2月20日日曜日
192011年2月20日日曜日
4日後
202011年2月20日日曜日
212011年2月20日日曜日
222011年2月20日日曜日
これまでの test-all
テストファイル
process
disk
232011年2月20日日曜日
並列化された test-all
・・・
テストファイル名
テストの結果
workers
dispatcher
テストファイル
242011年2月20日日曜日
実験条件
OS Mac OS X 10.6.6
CPU 2.66 GHz Intel Core i7
MEM 8GB 1067 MHz DDR3
252011年2月20日日曜日
実験方法• non parallel
• make TESTS=’-v -x fiber ruby’ test-all
• parallel
• make TESTS=’-v -j<N> -x fiber ruby’ test-all
• <N> を並列プロセス数に置き換え
• 並列プロセス数は 1, 2, 3, 5, 8, 13 で実施
262011年2月20日日曜日
0
37.5
75.0
112.5
150.0
no -j -j1 -j2 -j3 -j5 -j8 -j13
時間
TOTAL TESTCASES TESTS/S
272011年2月20日日曜日
0
0.75
1.50
2.25
3.00
no -j -j1 -j2 -j3 -j5 -j8 -j13
比
TOTAL TESTCASES TESTS/S ASSERTIONS/S
282011年2月20日日曜日
結果と考察• @sora_h が test-all を並列化した
• 作業用プロセス数の増加に応じて実行時間が減少しているが、コア数4を越えるとサチる
• CPUコアを有効活用できる事が確認できた
• 並列化することで失敗するテストがある
292011年2月20日日曜日
302011年2月20日日曜日
課題
• 並列化すること失敗するテストへの対応
• テストメソッド単位で並列化したら速くなるのか遅くなるのか?
• lib/test/* がメンテナ不在である件について
312011年2月20日日曜日
最後に復習
322011年2月20日日曜日
ext/ 以下の並列ビルド
• ext/extmk.rb はひとつひとつビルドしていく。
• make -j 4 とかやっても ext 以下だけ無意味。
• extmk.rb の中で -j n オプションを受け入れ、n
個の拡張ライブラリを並列ビルドさせたい。
332011年2月20日日曜日
MacRuby で gem が遅い件
• gem list で比較すると2倍程度遅い。
• どこが遅いかプロファイルを取る。
• 遅い箇所を改善する。
342011年2月20日日曜日
正規表現マッチが遅いらしい
• Oniguruma が遅いらしい。
• http://firefly.cr.ie.u-ryukyu.ac.jp/~shinya/xhago/
• Oniguruma を高速化したい。
• http://twitter.com/#!/yukihiro_matz/status/35521472273321984
352011年2月20日日曜日
SSL/TLS ライブラリ
• openssl にしか対応していない。
• 世には GnuTLS や CryptoAPI なども存在する。
• ライセンスやプラットフォームなどの要件に応じて選択できるようにしたい。
362011年2月20日日曜日
readline6 問題• readline6 は GPL3
• ruby とライセンス的に非互換
• ところが libedit はそのままではウンコ
• libedit でも readline のように使えるよう、拡張ライブラリ readline を改造したい。
372011年2月20日日曜日
あなたもコードでRuby に貢献できる!
382011年2月20日日曜日