- namarecoの負荷が従来の2〜3倍になっているのでprofileを取ろうとしてみた
- RTMP部に注目したかったので実際にはnamarecoの代わりにimarecoを使用
- ファイルが生成されるところまで動かしたがRubyのprofileはとても重く定常状態までは動かせなかった
- そのため初期化の部分が相対的に大きくカウントされている可能性がある
- 結果
% cumulative self self total
time seconds seconds calls ms/call ms/call name
5.50 11.25 11.25 2093 5.38 174.53 Array#each
4.34 20.14 8.89 1727 5.15 13.36 Array#push
4.07 28.48 8.34 1264 6.60 101.17 REXML::Element#namespace
3.88 36.43 7.95 1290 6.16 32.32 REXML::Attributes#get_attribute
3.04 42.66 6.23 2020 3.08 7.19 REXML::Element#root
2.54 47.86 5.20 262 19.85 251.41 Kernel.require
2.48 52.93 5.07 11924 0.43 0.54 Kernel.kind_of?
2.47 57.98 5.05 1290 3.91 62.93 REXML::Attributes#
2.39 62.87 4.89 1691 2.89 24.20 Enumerable.find
2.34 67.66 4.79 3930 1.22 1.60 String#==
2.16 72.08 4.42 281 15.73 35.09 REXML::Parsers::BaseParser#pull
1.91 76.00 3.92 1691 2.32 2.34 String#=~
1.71 79.51 3.51 483 7.27 10.68 IO#write
1.53 82.64 3.13 1533 2.04 16.15 Kernel.rand
1.51 85.73 3.09 2654 1.16 1.57 String#<<
1.34 88.47 2.74 1391 1.97 263.12 Class#new
1.20 90.92 2.45 5541 0.44 0.61 NilClass#nil?
1.14 93.26 2.34 5274 0.44 0.47 Kernel.nil?
1.08 95.47 2.21 1478 1.50 15.01 REXML::Element#document
0.98 97.48 2.01 52 38.65 1148.46 Array#delete_if
0.96 99.45 1.97 261 7.55 75.56 MonitorMixin.synchronize
0.92 101.33 1.88 1312 1.43 30.23 REXML::Document#doctype
0.91 103.19 1.86 99 18.79 109.60 Kernel.gem_original_require
0.90 105.04 1.85 12 154.17 1787.50 REXML::Parsers::TreeParser#parse
0.90 106.89 1.85 142 13.03 39.30 Rtmp#read
0.89 108.72 1.83 261 7.01 31.23 MonitorMixin.mon_exit
0.89 110.55 1.83 273 6.70 10.37 Fixnum#**
0.87 112.33 1.78 2440 0.73 2.27 Integer#to_int
0.85 114.06 1.73 261 6.63 10.54 Thread#pass
0.85 115.79 1.73 2990 0.58 5.64 String#
0.80 117.43 1.64 157 10.45 35.29 REXML::Attributes#[]=
0.79 119.05 1.62 189 8.57 82.80 Range#each
0.78 120.64 1.59 261 6.09 349.16 Logger#add
- 考察
- REXMLが目立つ
- プログラムの初期部分だから各種API処理の負荷が多くカウントされているだけかもしれない
- それでもREXMLをlibxml-rubyに置換してみるのはとりあえずやってみる価値はあるか?
- Array#eachとArray#pushはそれぞれどこから呼び出されたものかまで見れると対応のしようもありそうだが