Contenu connexe
Similaire à メモリアロケーションからみた拡張ライブラリに大切なこと (20)
メモリアロケーションからみた拡張ライブラリに大切なこと
- 2. 自己紹介
• 樽家 昌也 (MasayaTARUI)
• twitter id: @taru
• ircnet: tal_
• freenode: tarui
• 平日はふつうに?サラリーマン。
• 年に1,2度、networkと無縁な生活を求めて旅に
• 仕事で直接Rubyが対象になることは今のところない
• Rubyを使い始めてから13年目ぐらい?
- 21. まとめ
• 拡張ライブラリは簡単にかけるよ
• たまには気をつけておかないと、GCで痛い目をみるよ
• でも、たまにだけだよ
• RubyのGCは完全に保守的なわけではなくて、Ruby Objectが入ってる
Heapsしかみないよ
• RB_GC_GUARDは今の所、コンパイラの最適化とのおにごっこ
• 拡張ライブラリを書いたら一度はGC.stress=1で走らせておこう
• mallocで確保しているだけの領域にもなんらかの手当てがほしいなー
• (最近もRuby本体で今回の例と同じバグがありました…)
Rubyの書きやすさ+C言語のスピードの世界へようこそ!
- 23. hashベンチマーク(ソースは後)
mark user system total real
193p374 22.004 30.46 0.54 31 31.08143
200p195 17.09916 25.79 0.3 26.09 26.1964
r41094 14.4588 28.12 1.34 29.46 29.62575
r41095 12.13761 25.9 1.29 27.19 27.27527
r41097 7.250059 18.98 1.05 20.03 20.10459
r41128 6.633022 18.35 1.12 19.47 19.59778
r41325 1.272689 10.79 0.64 11.43 11.52074
r41634 0.870261 9.07 0.37 9.44 9.456588
0
5
10
15
20
25
30
35
193p374 200p195 r41094 r41095 r41097 r41128 r41325 r41634
mark
user
system
total
real
一部
- 24. 回数 r41634 Python 2.7.4
1000000 2.809293 1.559357
2000000 5.932282 3.421049
3000000 8.812863 5.801263
Pythonと適当に比較してみた(ソースは後)
Oprofile 取ってみたところ、
支配的なのはst_lookupとsiphashが半々ぐらい