Profiling Ruby program

루비 프로그램 맨 위에 다음과 같이 적어주면 된다.
(여기를 참고.)

require ‘profile’

또는 ruby의 command-line parameter로 ‘-rprofile’을 줘도 된다. (역시 profile module을 맨처음 require하는 의미)

이런 방식으로 profiler와 함께 실행시켜보면 다음과 같은 결과를 볼 수 있을 것이다.

%   cumulative   self              self     total
time   seconds   seconds    calls  ms/call  ms/call  name
35.56     0.16      0.16       86     1.86     7.44  Kernel.require
8.89     0.20      0.04       57     0.70     1.58  SubscriptionManager#constructSubscriptionFromRow
8.89     0.24      0.04      203     0.20     0.30  Kernel.puts
6.67     0.27      0.03       23     1.30    10.00  Array#each
6.67     0.30      0.03        7     4.29    12.86  Mysql::Result#each
6.67     0.33      0.03      728     0.04     0.04  Array#[]
4.44     0.35      0.02      407     0.05     0.05  IO#write
4.44     0.37      0.02       18     1.11     1.11  Mysql#initialize
2.22     0.38      0.01       92     0.11     0.11  Kernel.==
2.22     0.39      0.01       80     0.13     0.13  String#==
2.22     0.40      0.01       13     0.77     0.77  Module#attr_accessor
2.22     0.41      0.01       18     0.56     0.56  Mysql#query
2.22     0.42      0.01      119     0.08     0.08  Fixnum#to_s
2.22     0.43      0.01       31     0.32     0.32  Module#attr_reader
2.22     0.44      0.01       22     0.45     0.45  Module#alias_method
2.22     0.45      0.01       57     0.18     0.18  Subscription#initialize

한편, eruby interpreter랑은 좀 이상하게 동작하는 (무한루프) 문제가 있어서, eruby tag를 모두 빼고 테스트해야만 했다. 이 문제는 좀 더 살펴보아야겠다.

One thought to “Profiling Ruby program”

  1. ruby를 쓰시나 봅니다. 순수 객체 지향에 가깝다는 말은 들었는데 아직 접해보지는 못했습니다. 🙂

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.