私はt_time_tracker(woohoo!)と呼ばれる最初の宝石を開発しています。すべてが発展していた。私はそれが同じくらい私はおそらくダウンできるだけへの実行時間を削減することができたとしてoptomized:私の宝石はなぜロードに時間がかかりますか?
t_time_tracker[master*]% time ruby -Ilib ./bin/t_time_tracker
You're not working on anything
0.07s user 0.03s system 67% cpu 0.141 total
(これは私のアプリの「Hello World」のである - パラメータなしでそれを呼び出すだけでプリントアウトする「あなた」何でも作業していない」)
約10分の1秒で、私のCPUの67%を使っています。それはかなり瞬時に感じます。のは、それを構築してみましょう:
$ gem build t_time_tracker.gemspec
$ gem install ./t_time_tracker-0.0.0.gem
とインストールされたバイナリとまったく同じことを行います。
$ time t_time_tracker
You're not working on anything
t_time_tracker 0.42s user 0.06s system 93% cpu 0.513 total
0.5秒!それはどこから来ましたか?!
t_time_tracker[master*]% time ruby ./bin/t_time_tracker
(starting binary)
(require 'time' and 'optparse')
0.041432
(before `require 't_time_tracker')
0.497135
(after `require 't_time_tracker')
(Gem.loaded_specs.keys = t_time_tracker)
(initializing TTimeTracker class)
You're not working on anything
ruby ./bin/t_time_tracker 0.44s user 0.07s system 91% cpu 0.551 total
さてさて、そう `必要「t_time_tracker」行が犯人であると思われる:いくつかのデバッグ出力を追加し、ボトルネックがどこにあるか確認するために、開発のバイナリからのシステムの宝石が含まれてみましょう。 irbでもう一度試してみましょう。
$ irb
>> t=Time.now; require 't_time_tracker'; puts Time.now-t
0.046792
=> nil
...何ですか?しかし、それはちょうど半分を取っていた!
$ gem build t_time_tracker.gemspec
$ gem install ./t_time_tracker-0.0.0.gem
$ time t_time_tracker
(starting binary) <---noticeable half second delay before this line shows up
(require 'time' and 'optparse')
0.050458
(before `require 't_time_tracker')
0.073789
(after `require 't_time_tracker')
(Gem.loaded_specs.keys = t_time_tracker)
(initializing TTimeTracker class)
You're not working on anything
t_time_tracker 0.42s user 0.06s system 88% cpu 0.546 total
ええ、0.5秒遅れはどこから来ていますか?私は通常気にしませんが、これは私が何をやっているかを更新するために約50回を呼び出すものです。 50 * 0.5秒* 365日* 70年=失われた人生の15日間。
システム情報:
はMac OS X 10.7.3。 2 GHz Intel Core 2 Duo。 4 GB RAMルビ1.9.2p290。
% gem -v
1.8.10<---noticeable half second delay before this line shows up
% gem list | wc -l
209
1.9.3のようなパフォーマンスは何ですか? –
興味深い... 'rvm 1.9.3 && gem install t_time_tracker'は私に超高速実行時間(合計0.100秒)を与えてくれますが、これは' gem list | wc -l' = 7. Hmmm ... – cgenco
'gem install rails'の後、' gem list | wc-l'= 33であり、「時間t」は平均約0.21である。ソリューションは単に "多くの宝石をインストールしないでください"ですか? – cgenco