38
Ruby の懸案事項 Kenta Murata 2011.02.20 Ruby Workshop Sapporo 1 2011220日日曜日

Ruby の懸案事項

Embed Size (px)

DESCRIPTION

Ruby の懸案事項を説明し、我こそはと思う人の出現を祈ります。

Citation preview

Page 1: Ruby の懸案事項

Ruby の懸案事項Kenta Murata

2011.02.20 Ruby Workshop Sapporo

12011年2月20日日曜日

Page 2: Ruby の懸案事項

自己紹介

22011年2月20日日曜日

Page 3: Ruby の懸案事項

• 村田 賢太 a.k.a @mrkn

• Ruby コミッタ

• Ruby 札幌

• 高専カンファレンス副代表

• 株式会社ジェネティックラボ社内SE

• 趣味数学者,趣味物理学者

32011年2月20日日曜日

Page 4: Ruby の懸案事項

AD

42011年2月20日日曜日

Page 5: Ruby の懸案事項

2010年3月1日月曜日 52011年2月20日日曜日

Page 6: Ruby の懸案事項

Hokuriku.rb x 高専カンファレンス

62011年2月20日日曜日

Page 7: Ruby の懸案事項

Hokuriku.rb x 高専カンファレンス

• 3月20日

• 石川工業高等専門学校• @igaiga555, 五十嵐邦明 (株式会社万葉)

• @june29, 大和田純 (サイジニア株式会社)

• @mrkn, 村田賢太 ← it’s me!!!

72011年2月20日日曜日

Page 8: Ruby の懸案事項

Ruby の懸案事項Kenta Murata

2011.02.20 Ruby Workshop Sapporo

82011年2月20日日曜日

Page 9: Ruby の懸案事項

test-all の並列化• test-all が遅い。

• 並列化されていれば、ウェイトなどで時間がかかるテストケースの裏で、次々と他のテストケースを実行できる。

• あとで。

92011年2月20日日曜日

Page 10: Ruby の懸案事項

ext/ 以下の並列ビルド

• ext/extmk.rb はひとつひとつビルドしていく。

• make -j 4 とかやっても ext 以下だけ無意味。

• extmk.rb の中で -j n オプションを受け入れ、n

個の拡張ライブラリを並列ビルドさせたい。

102011年2月20日日曜日

Page 11: Ruby の懸案事項

MacRuby で gem が遅い件

• gem list で比較すると2倍程度遅い。

• どこが遅いかプロファイルを取る。

• 遅い箇所を改善する。

112011年2月20日日曜日

Page 12: Ruby の懸案事項

正規表現マッチが遅いらしい

• 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 の懸案事項

SSL/TLS ライブラリ

• openssl にしか対応していない。

• 世には GnuTLS や CryptoAPI なども存在する。

• ライセンスやプラットフォームなどの要件に応じて選択できるようにしたい。

132011年2月20日日曜日

Page 14: Ruby の懸案事項

readline6 問題• readline6 は GPL3

• ruby とライセンス的に非互換

• ところが libedit はそのままではウンコ

• libedit でも readline のように使えるよう、拡張ライブラリ readline を改造したい。

142011年2月20日日曜日

Page 15: Ruby の懸案事項

test-all 並列化について

152011年2月20日日曜日

Page 16: Ruby の懸案事項

Ruby のテスト• Ruby 本体を弄って、その変更点をリポジトリに反映させるにはテストを実施する必要がある

• 既存のテスト全部 + 変更点に関するテスト

• make test-all で実行するのだが、多すぎて時間がかかってしまう

162011年2月20日日曜日

Page 17: Ruby の懸案事項

@sora_h

172011年2月20日日曜日

Page 18: Ruby の懸案事項

182011年2月20日日曜日

Page 19: Ruby の懸案事項

192011年2月20日日曜日

Page 20: Ruby の懸案事項

4日後

202011年2月20日日曜日

Page 21: Ruby の懸案事項

212011年2月20日日曜日

Page 22: Ruby の懸案事項

222011年2月20日日曜日

Page 23: Ruby の懸案事項

これまでの test-all

テストファイル

process

disk

232011年2月20日日曜日

Page 24: Ruby の懸案事項

並列化された test-all

・・・

テストファイル名

テストの結果

workers

dispatcher

テストファイル

242011年2月20日日曜日

Page 25: Ruby の懸案事項

実験条件

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 の懸案事項

実験方法• 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 の懸案事項

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 の懸案事項

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 の懸案事項

結果と考察• @sora_h が test-all を並列化した

• 作業用プロセス数の増加に応じて実行時間が減少しているが、コア数4を越えるとサチる

• CPUコアを有効活用できる事が確認できた

• 並列化することで失敗するテストがある

292011年2月20日日曜日

Page 30: Ruby の懸案事項

302011年2月20日日曜日

Page 31: Ruby の懸案事項

課題

• 並列化すること失敗するテストへの対応

• テストメソッド単位で並列化したら速くなるのか遅くなるのか?

• lib/test/* がメンテナ不在である件について

312011年2月20日日曜日

Page 32: Ruby の懸案事項

最後に復習

322011年2月20日日曜日

Page 33: Ruby の懸案事項

ext/ 以下の並列ビルド

• ext/extmk.rb はひとつひとつビルドしていく。

• make -j 4 とかやっても ext 以下だけ無意味。

• extmk.rb の中で -j n オプションを受け入れ、n

個の拡張ライブラリを並列ビルドさせたい。

332011年2月20日日曜日

Page 34: Ruby の懸案事項

MacRuby で gem が遅い件

• gem list で比較すると2倍程度遅い。

• どこが遅いかプロファイルを取る。

• 遅い箇所を改善する。

342011年2月20日日曜日

Page 35: Ruby の懸案事項

正規表現マッチが遅いらしい

• 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 の懸案事項

SSL/TLS ライブラリ

• openssl にしか対応していない。

• 世には GnuTLS や CryptoAPI なども存在する。

• ライセンスやプラットフォームなどの要件に応じて選択できるようにしたい。

362011年2月20日日曜日

Page 37: Ruby の懸案事項

readline6 問題• readline6 は GPL3

• ruby とライセンス的に非互換

• ところが libedit はそのままではウンコ

• libedit でも readline のように使えるよう、拡張ライブラリ readline を改造したい。

372011年2月20日日曜日

Page 38: Ruby の懸案事項

あなたもコードでRuby に貢献できる!

382011年2月20日日曜日