티스토리 뷰

개발자노트

Profiling ruby

앤디군 2005. 10. 13. 10:18
ruby가 깔끔하고 타 언어의 좋은 장점들만을 모아서 만들었다는 철학에 걸맞게 좋은 인상을 주고 있다. 하지만 다만 한가지 걸리는 것은 웹 개발시 production level에서도 사용할 수 있을 만한 성능을 내줄 수 있느냐 하는 것이다.
우선은 소프트웨어의 구조를 잘 정돈하고 profiling을 통해서 성능 개선을 하면 어느 정도는 만족하지 않을까....

ruby interpreter에는 profiler가 내장되어 있다. profiler library를 포함시키는 것 만으로 전체 프로그램 실행 결과에 대한 profiling 결과를 얻을 수 있는데 -r profiler 또는 source code에 require "profiler"를 추가하면 된다.

개인적으로는 소스를 고치지 않고 -r profiler 옵션을 붙여서 실행하는 것을 선호한다. 아무튼 profiling을 한 결과는 프로그램 실행 후 다음과 같이 출력이 된다.


% cumulative self self total
time seconds seconds calls ms/call ms/call name
38.18 1.26 1.26 1145 1.10 1.49 KeywordExtractor#goto_s
12.73 1.68 0.42 68 6.18 113.38 Array#each
12.42 2.09 0.41 2946 0.14 0.16 Hash#[]
4.24 2.23 0.14 1780 0.08 0.08 Fixnum#==
3.33 2.34 0.11 1641 0.07 0.07 NilClass#nil?


다른 profiler와 비슷한 출력 결과를 보여주는데 java의 profiler와 같이 thread stack도 같이 보여주면 좋을 것 같은데 아쉽게 그렇게 그 정도까지 보여주진 않는다. 하지만 이런 정보를 -r profiler 옵션 하나로 쉽게 볼 수 있다는게 어딘가..
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함