나는 첫 번째 보석 인 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
(이 내 응용 프로그램의 "안녕하세요!"입니다 - 매개 변수없이 그것을 호출 그냥 출력 '당신' 다시 작업하지 않음 ")
약 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
... 무엇을할까요? 그러나 그것은 단지 0.5 초 걸렸다! 우리의 디버깅 결과를 가지고 보석을 만들자 :
$ 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. 2GHz Intel Core 2 Duo. 4GB 램. 루비 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