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