ruby-prof 0.16.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES +532 -467
  3. data/LICENSE +24 -24
  4. data/README.rdoc +5 -454
  5. data/Rakefile +110 -113
  6. data/bin/ruby-prof +380 -340
  7. data/bin/ruby-prof-check-trace +45 -45
  8. data/ext/ruby_prof/extconf.rb +36 -64
  9. data/ext/ruby_prof/rp_allocation.c +279 -0
  10. data/ext/ruby_prof/rp_allocation.h +31 -0
  11. data/ext/ruby_prof/rp_call_info.c +271 -407
  12. data/ext/ruby_prof/rp_call_info.h +35 -48
  13. data/ext/ruby_prof/rp_measure_allocations.c +52 -76
  14. data/ext/ruby_prof/rp_measure_memory.c +42 -77
  15. data/ext/ruby_prof/rp_measure_process_time.c +67 -71
  16. data/ext/ruby_prof/rp_measure_wall_time.c +62 -45
  17. data/ext/ruby_prof/rp_measurement.c +230 -0
  18. data/ext/ruby_prof/rp_measurement.h +50 -0
  19. data/ext/ruby_prof/rp_method.c +630 -411
  20. data/ext/ruby_prof/rp_method.h +70 -52
  21. data/ext/ruby_prof/rp_profile.c +895 -0
  22. data/ext/ruby_prof/rp_profile.h +37 -0
  23. data/ext/ruby_prof/rp_stack.c +196 -128
  24. data/ext/ruby_prof/rp_stack.h +56 -51
  25. data/ext/ruby_prof/rp_thread.c +337 -273
  26. data/ext/ruby_prof/rp_thread.h +36 -27
  27. data/ext/ruby_prof/ruby_prof.c +48 -671
  28. data/ext/ruby_prof/ruby_prof.h +17 -56
  29. data/ext/ruby_prof/vc/ruby_prof.sln +20 -21
  30. data/ext/ruby_prof/vc/{ruby_prof_20.vcxproj → ruby_prof.vcxproj} +38 -5
  31. data/lib/ruby-prof.rb +52 -58
  32. data/lib/ruby-prof/assets/call_stack_printer.html.erb +713 -0
  33. data/lib/ruby-prof/assets/call_stack_printer.png +0 -0
  34. data/lib/ruby-prof/assets/graph_printer.html.erb +356 -0
  35. data/lib/ruby-prof/call_info.rb +57 -126
  36. data/lib/ruby-prof/call_info_visitor.rb +38 -40
  37. data/lib/ruby-prof/compatibility.rb +109 -178
  38. data/lib/ruby-prof/exclude_common_methods.rb +198 -0
  39. data/lib/ruby-prof/measurement.rb +14 -0
  40. data/lib/ruby-prof/method_info.rb +90 -129
  41. data/lib/ruby-prof/printers/abstract_printer.rb +127 -85
  42. data/lib/ruby-prof/printers/call_info_printer.rb +51 -41
  43. data/lib/ruby-prof/printers/call_stack_printer.rb +182 -260
  44. data/lib/ruby-prof/printers/call_tree_printer.rb +151 -130
  45. data/lib/ruby-prof/printers/dot_printer.rb +132 -132
  46. data/lib/ruby-prof/printers/flat_printer.rb +52 -70
  47. data/lib/ruby-prof/printers/graph_html_printer.rb +63 -244
  48. data/lib/ruby-prof/printers/graph_printer.rb +114 -116
  49. data/lib/ruby-prof/printers/multi_printer.rb +127 -58
  50. data/lib/ruby-prof/profile.rb +33 -55
  51. data/lib/ruby-prof/rack.rb +171 -95
  52. data/lib/ruby-prof/task.rb +147 -147
  53. data/lib/ruby-prof/thread.rb +35 -41
  54. data/lib/ruby-prof/version.rb +3 -3
  55. data/lib/unprof.rb +10 -10
  56. data/ruby-prof.gemspec +58 -57
  57. data/test/abstract_printer_test.rb +26 -0
  58. data/test/alias_test.rb +129 -0
  59. data/test/basic_test.rb +129 -128
  60. data/test/call_info_visitor_test.rb +31 -31
  61. data/test/duplicate_names_test.rb +32 -32
  62. data/test/dynamic_method_test.rb +53 -55
  63. data/test/enumerable_test.rb +21 -21
  64. data/test/exceptions_test.rb +24 -16
  65. data/test/exclude_methods_test.rb +146 -0
  66. data/test/exclude_threads_test.rb +53 -53
  67. data/test/fiber_test.rb +73 -79
  68. data/test/gc_test.rb +96 -0
  69. data/test/line_number_test.rb +161 -71
  70. data/test/marshal_test.rb +119 -0
  71. data/test/measure_allocations.rb +30 -0
  72. data/test/measure_allocations_test.rb +385 -26
  73. data/test/measure_allocations_trace_test.rb +385 -0
  74. data/test/measure_memory_trace_test.rb +756 -0
  75. data/test/measure_process_time_test.rb +849 -63
  76. data/test/measure_times.rb +54 -0
  77. data/test/measure_wall_time_test.rb +459 -255
  78. data/test/multi_printer_test.rb +71 -83
  79. data/test/no_method_class_test.rb +15 -15
  80. data/test/parser_timings.rb +24 -0
  81. data/test/pause_resume_test.rb +166 -166
  82. data/test/prime.rb +56 -54
  83. data/test/printer_call_stack_test.rb +28 -0
  84. data/test/printer_call_tree_test.rb +31 -0
  85. data/test/printer_flat_test.rb +68 -0
  86. data/test/printer_graph_html_test.rb +60 -0
  87. data/test/printer_graph_test.rb +41 -0
  88. data/test/printers_test.rb +141 -255
  89. data/test/printing_recursive_graph_test.rb +81 -127
  90. data/test/rack_test.rb +157 -93
  91. data/test/recursive_test.rb +210 -215
  92. data/test/singleton_test.rb +38 -38
  93. data/test/stack_printer_test.rb +64 -78
  94. data/test/start_stop_test.rb +109 -112
  95. data/test/test_helper.rb +24 -264
  96. data/test/thread_test.rb +144 -187
  97. data/test/unique_call_path_test.rb +190 -202
  98. data/test/yarv_test.rb +56 -55
  99. metadata +34 -114
  100. data/doc/LICENSE.html +0 -114
  101. data/doc/README_rdoc.html +0 -603
  102. data/doc/Rack.html +0 -95
  103. data/doc/Rack/RubyProf.html +0 -226
  104. data/doc/RubyProf.html +0 -962
  105. data/doc/RubyProf/AbstractPrinter.html +0 -546
  106. data/doc/RubyProf/AggregateCallInfo.html +0 -551
  107. data/doc/RubyProf/CallInfo.html +0 -639
  108. data/doc/RubyProf/CallInfoPrinter.html +0 -120
  109. data/doc/RubyProf/CallInfoVisitor.html +0 -198
  110. data/doc/RubyProf/CallStackPrinter.html +0 -1121
  111. data/doc/RubyProf/CallTreePrinter.html +0 -641
  112. data/doc/RubyProf/Cmd.html +0 -631
  113. data/doc/RubyProf/DotPrinter.html +0 -257
  114. data/doc/RubyProf/FlatPrinter.html +0 -163
  115. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +0 -208
  116. data/doc/RubyProf/GraphHtmlPrinter.html +0 -552
  117. data/doc/RubyProf/GraphPrinter.html +0 -139
  118. data/doc/RubyProf/MethodInfo.html +0 -745
  119. data/doc/RubyProf/MultiPrinter.html +0 -360
  120. data/doc/RubyProf/Profile.html +0 -763
  121. data/doc/RubyProf/ProfileTask.html +0 -490
  122. data/doc/RubyProf/Thread.html +0 -310
  123. data/doc/created.rid +0 -31
  124. data/doc/css/fonts.css +0 -167
  125. data/doc/css/rdoc.css +0 -590
  126. data/doc/examples/flat_txt.html +0 -138
  127. data/doc/examples/graph_html.html +0 -909
  128. data/doc/examples/graph_txt.html +0 -247
  129. data/doc/fonts/Lato-Light.ttf +0 -0
  130. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  131. data/doc/fonts/Lato-Regular.ttf +0 -0
  132. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  133. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  134. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  135. data/doc/images/add.png +0 -0
  136. data/doc/images/arrow_up.png +0 -0
  137. data/doc/images/brick.png +0 -0
  138. data/doc/images/brick_link.png +0 -0
  139. data/doc/images/bug.png +0 -0
  140. data/doc/images/bullet_black.png +0 -0
  141. data/doc/images/bullet_toggle_minus.png +0 -0
  142. data/doc/images/bullet_toggle_plus.png +0 -0
  143. data/doc/images/date.png +0 -0
  144. data/doc/images/delete.png +0 -0
  145. data/doc/images/find.png +0 -0
  146. data/doc/images/loadingAnimation.gif +0 -0
  147. data/doc/images/macFFBgHack.png +0 -0
  148. data/doc/images/package.png +0 -0
  149. data/doc/images/page_green.png +0 -0
  150. data/doc/images/page_white_text.png +0 -0
  151. data/doc/images/page_white_width.png +0 -0
  152. data/doc/images/plugin.png +0 -0
  153. data/doc/images/ruby.png +0 -0
  154. data/doc/images/tag_blue.png +0 -0
  155. data/doc/images/tag_green.png +0 -0
  156. data/doc/images/transparent.png +0 -0
  157. data/doc/images/wrench.png +0 -0
  158. data/doc/images/wrench_orange.png +0 -0
  159. data/doc/images/zoom.png +0 -0
  160. data/doc/index.html +0 -626
  161. data/doc/js/darkfish.js +0 -161
  162. data/doc/js/jquery.js +0 -4
  163. data/doc/js/navigation.js +0 -142
  164. data/doc/js/navigation.js.gz +0 -0
  165. data/doc/js/search.js +0 -109
  166. data/doc/js/search_index.js +0 -1
  167. data/doc/js/search_index.js.gz +0 -0
  168. data/doc/js/searcher.js +0 -228
  169. data/doc/js/searcher.js.gz +0 -0
  170. data/doc/table_of_contents.html +0 -942
  171. data/examples/cachegrind.out.1 +0 -114
  172. data/examples/cachegrind.out.1.32313213 +0 -114
  173. data/examples/flat.txt +0 -50
  174. data/examples/graph.dot +0 -84
  175. data/examples/graph.html +0 -823
  176. data/examples/graph.txt +0 -139
  177. data/examples/multi.flat.txt +0 -23
  178. data/examples/multi.graph.html +0 -760
  179. data/examples/multi.grind.dat +0 -114
  180. data/examples/multi.stack.html +0 -547
  181. data/examples/stack.html +0 -547
  182. data/ext/ruby_prof/rp_measure.c +0 -40
  183. data/ext/ruby_prof/rp_measure.h +0 -45
  184. data/ext/ruby_prof/rp_measure_cpu_time.c +0 -136
  185. data/ext/ruby_prof/rp_measure_gc_runs.c +0 -73
  186. data/ext/ruby_prof/rp_measure_gc_time.c +0 -60
  187. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +0 -108
  188. data/ext/ruby_prof/vc/ruby_prof_19.vcxproj +0 -110
  189. data/lib/ruby-prof/aggregate_call_info.rb +0 -76
  190. data/lib/ruby-prof/assets/call_stack_printer.css.html +0 -117
  191. data/lib/ruby-prof/assets/call_stack_printer.js.html +0 -385
  192. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +0 -64
  193. data/test/aggregate_test.rb +0 -136
  194. data/test/block_test.rb +0 -74
  195. data/test/call_info_test.rb +0 -78
  196. data/test/issue137_test.rb +0 -63
  197. data/test/measure_cpu_time_test.rb +0 -213
  198. data/test/measure_gc_runs_test.rb +0 -32
  199. data/test/measure_gc_time_test.rb +0 -36
  200. data/test/measure_memory_test.rb +0 -33
  201. data/test/method_elimination_test.rb +0 -84
  202. data/test/module_test.rb +0 -45
  203. data/test/stack_test.rb +0 -138
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 998f8b9ded9813ff8861c7a4fb23aaf5bd71ce92
4
- data.tar.gz: a72b21161e6538935337a6321361449592663a66
2
+ SHA256:
3
+ metadata.gz: d37fba2001af9994daa9e1c13e316d0a4fe069c769e431915ef573413241203f
4
+ data.tar.gz: f3e9ff45b63fd26c76fd73cca3f20b67a400c39a1183b135364ce89386a51096
5
5
  SHA512:
6
- metadata.gz: 61004f65fda9b55bc3eb68ade93060c5ae1d074215c44b94500517ea18704c7b40942d705cdd07b0bdc3a830e8ea3a3ff47af43873057769f8dcc3ecfddf4d38
7
- data.tar.gz: 06208b57ce6d33668f5210a5c19869e0e434ab9933ce657b455adea1d8167868439976fbdb76dcf9da157f774c7744af786324405bfe85202475d7b7d6fb07ff
6
+ metadata.gz: 9e4e378eef6217b03f62497c38fc765275aab3176e0559449b62e68b2f0e38931dde75ffafb28c01bebf44dc9bfed86a3664c891bdb9dc49f10bb4a1228c28d3
7
+ data.tar.gz: 4bb4a9a4c41549e5618e3b0cb4e8d7aa14163dfa6b742c739b0c1be16196eb7035bd0f9d9e8ceaf0be7b5d9127acbaec4811094835661a2583bcdf4a5c0adbfa
data/CHANGES CHANGED
@@ -1,467 +1,532 @@
1
- 0.16.2 (2016-08-25)
2
- =====================
3
- * fixed incorrect setting of RUBY_VERSION macro
4
-
5
- 0.16.1 (2016-08-24)
6
- =====================
7
- * fixed compile problem with ruby 2.1.10
8
-
9
- 0.16.0 (2016-08-24)
10
- =====================
11
- * ruby-prof can now be installed if ruby has been compiled with --disable-gems or
12
- RUBYOPT includes --disable-gems (thx to Arthur Nogueira Neves)
13
- * Profile.new now accepts and prefers an options hash:
14
- - measure_mode: one of the RubyProf measure mode constants
15
- - exclude_threads: an array of threads to ignore when collecting profile data
16
- - include_threads: an array of threads to include when collecting profile data
17
- - merge_fibers: whether or not to merge the profile data for all fibers under their creating thread
18
- * overhauled printer for cachegrind profiles:
19
- - profile data for each thread dumped to a separate file, as kcachegrind does not
20
- fully implement the cachegrind specification
21
- - this required a change in interface: it's now necessary to specify a directory
22
- where to dump the cachegrind files
23
- - naming convention for cachegrind files changed so that kcachegrind shows them
24
- all in the open dialog
25
- * improved Rack middleware:
26
- - it's now possible to use the MultiPrinter
27
- - new option ignore_existing_threads: will ignore all prexisiting threads
28
- when profiling a request, except the thread perfoming the request.
29
- - new option request_thread_only: will ignore all preexisting threads, but also
30
- all threads spwaned during the execution of the rack request.
31
- - new option merge_fibers: whether or not to merge the profile data for all fibers under their creating thread
32
- * fixed setting threshold bug when displaying stack profiles (thx to Michal Konarski)
33
- * code related to printing profiles is now autoloaded for efficiency (thx to Dave Gynn)
34
-
35
- 0.15.9 (2015-12-08)
36
- ======================
37
- * rack profiler now supports lambdas for generating profile paths (thx to Jean Rougé)
38
- * fixed a bug when printing graph profiles
39
-
40
- 0.15.8 (2015-04-24)
41
- ======================
42
- * added missing assets to gem build
43
- * fixed randomly failing test
44
-
45
- 0.15.7 (2015-04-23)
46
- ======================
47
- * html profiles are now single page (thx to Thomas Leishman)
48
-
49
- 0.15.6 (2015-02-22)
50
- ======================
51
- * improved upon computing children time in graph printers
52
-
53
- 0.15.5 (2015-02-22)
54
- ======================
55
- * changed output format of flat_printer_with_line_number
56
- * support using multi printer from command line (Dov Murik)
57
-
58
- 0.15.4 (2015-02-14)
59
- ======================
60
- * using env variable to specify mesaurement mode work again
61
- * measuring memory/object allocations works for 2.1 adn 2.2 again
62
-
63
- 0.15.3 (2015-01-16)
64
- ======================
65
- * support ruby 2.2.0
66
-
67
- 0.15.2 (2014-05-20)
68
- ======================
69
- * rack middleware creates print dir for profile result (Neng)
70
-
71
- 0.15.1 (2014-05-20)
72
- ======================
73
- * added license to gemspec
74
-
75
- 0.15.0 (2014-05-02)
76
- ======================
77
- * improved cpu time measurement (Charlie Somerville)
78
-
79
- 0.14.2 (2014-01-05)
80
- ======================
81
- * hopefully fixed compile problem under Windows
82
-
83
- 0.14.0 (2014-01-02)
84
- ======================
85
- * support ruby 2.1.0
86
- * dropped support for 1.8.x, 1.9.1 and 1.9.2
87
-
88
- 0.13.1 (2013-12-14)
89
- ======================
90
- * speed up for displaying large call stacks (Benjamin Quoming)
91
-
92
- 0.13 (2013-03-10)
93
- ======================
94
- * support fibers on 1.9.x+
95
- * improved display for very wide call stacks (Sammy Larbi)
96
-
97
- 0.12.2 (2013-02-13)
98
- ======================
99
- * Fixed segfault when using falcon or railsexpress patches for 1.9.3
100
-
101
- 0.12.1 (2013-01-07)
102
- ======================
103
- * Add back in pause/resume support since Rails uses it
104
-
105
- 0.12.0 (2013-01-06)
106
- ======================
107
- * Ruby 2.0.0 support (Charlie Savage)
108
- * Fix issue where profiling results could exceed 100% if profile code had multiple top level methods (Charlie Savage)
109
- * Replaced RubyProf::Thread#top_method with RubyProf::Thread#top_methods (Charlie Savage)
110
- * Added RubyProf::Thread#total_time (Charlie Savage)
111
- * Remove the -r and -e command line options. If you need specific libraries or code profiled then add them
112
- to your code (Charlie Savage).
113
- * Rewrite ruby-prof script to be more self-contained (Gary Weaver)
114
- * Fix list formatting in readme (Thilo Rusche)
115
- * Remove pause/resume support since its buggy and complicates the code
116
-
117
- 0.11.3 (2012-12-27)
118
- ======================
119
- * Prefix c functions with prof_ to avoid name conflicts (Kenta Murata)
120
- * Update ruby-prof script to avoid seg faults (Gary Weaver)
121
- * Rakefile updates (Roger Pack)
122
- * Fix regexp file reading (Gilbert Roulot)
123
- * Update documentation (Timo Schilling)
124
- * Fix up ruby warnings (Mike Gehard)
125
- * Remove duplicate code (Chas Lemley)
126
-
127
-
128
- 0.11.2 (2012-05-06)
129
- ======================
130
- * Fix compile issue with BOOL. Should be _Bool for C99.
131
-
132
-
133
- 0.11.1 (2012-05-06)
134
- ======================
135
- * Added option --exclude-common-callbacks, plus exclude #map and #inject in common cycles (Vasily Fedoseyev)
136
- * Add option --exclude-common-cycles to exclude common iterators (Vasily Fedoseyev)
137
- * Allow method elimination from command line via '-x' and '-X' keys (Vasily Fedoseyev)
138
-
139
-
140
- 0.11.0 (2012-05-05)
141
- ======================
142
- * Fix pause/resume so it actually works and add tests (David Barri)
143
- * Resume now returns the result of the block when given (David Barri)
144
- * Make recursive method explanation more clear (Charlie Savage)
145
- * Fix ruby warnings (Charlie Savage)
146
- * Toggle GC.enable_stats when profiling for memory to get the data (Vasily Fedoseyev)
147
- * Fix patched ruby support and remove some warnings (Vasily Fedoseyev)
148
- * Fix tests on 1.8.7 (rogerdpack)
149
-
150
-
151
- 0.11.0.rc3 (2012-03-26)
152
- ======================
153
- * Include missing files in gemspec (Charlie Savage).
154
-
155
-
156
- 0.11.0.rc2 (2012-03-25)
157
- ======================
158
- * Lots of improvements to Rack handler - this can be used to profile requests
159
- in Rails and other rack-based ruby web frameworks (Charlie Savage).
160
- * Reimplemented handling of recursive calls using CallInfoVisitor (Charlie Savage).
161
- * Fix bug where child times were not correctly reported in complicated
162
- call graphs with recursion like in frameworks like Rails (Charlie Savage).
163
- * Add in recursive call information to Flat, Graph and Graph HTML reports (Charlie Savage).
164
- * Add in new thread class add added RubyProf::Thread#top_method to
165
- make report generation easier (Charlie Savage).
166
- * Add in CallInfoVisitor class to make it easy to iterate over a call graph (Charlie Savage).
167
- * Add in CallInfoPrinter to make it visualize RubyProf's internal call graphs (Charlie Savage).
168
- * Significant updates to documentation (Charlie Savage).
169
- * More c code cleanup (Charlie Savage).
170
-
171
- 0.11.0.rc1 (2012-03-24)
172
- ======================
173
- * Big internal refactoring of C code to make RubyProf easier to understand and extend (Charlie Savage).
174
- * Profile results are now returned as instances of a new class RubyProf::Profile. The old api
175
- is supported via a compatability layer that at some point will be deprecated. (Charlie Savage).
176
- * On Windows, use QueryPerformanceCounter and QueryPerformanceFrequency to measure CPU time instead
177
- of rdtsc. This change is based on Microsoft's recommendation (Charlie Savage).
178
- * On Windows use GetProcessTimes to return real PROCESS_TIME times instead of wall times (Charlie Savage).
179
- * Split out tests for each time of measurement (cpu_time, process_time, etc.) (Charlie Savage).
180
- * Dropped support for Ruby 1.8.4 and 1.8.6 and 1.9.0 (Charlie Savage).
181
- * Added support for sorting results by total, self, wait and child times (Jan Suchal)
182
- * Added tests for sorting behaviour & removed options from constructor to print method (Jan Suchal)
183
- * Fix line number tests due to changes at top of file (Charlie Savage).
184
- * Add encoding statement to top of all files for Ruby 1.9.x compatability (Charlie Savage).
185
- * Add def file for VC to avoid the whole declspec annoyance (Charlie Savage).
186
- * Update test suite to ensure current working directory is correct (Charlie Savage).
187
- * Modernize gem file and remove various custom/home grown solutions that aren't needed anymore (Charlie Savage).
188
- * Remove custom mingw build scripts, use rake compiler instead (Charlie Savage).
189
- * Fixes for compiling with VC 2010 (Charlie Savage).
190
-
191
- 0.10.8 (2011-07-06)
192
- ======================
193
- * 1.9.3 super class (Roger Pack)
194
-
195
- 0.10.7 (2011-05-09)
196
- ======================
197
- * Fix a bug with REE's GC stats. Issue #53 [thanks graaff]
198
-
199
- 0.10.6 (2011-04-29)
200
- ======================
201
- * Slightly more normalized url for linux/windows links to files.
202
-
203
- 0.10.5 (2011-04-20)
204
- =======================
205
- * 1.8.6 compat for -v command (bug fix)
206
-
207
- 0.10.4 (2011-04-20)
208
- =======================
209
- * Faster load time for ruby-prof itself.
210
-
211
- 0.10.3
212
- =======================
213
- * Can cleanly load before rubygems now.
214
-
215
- 0.10.2
216
- =======================
217
- * Fix for 1.9.2, os x for latest commits (thanks skaes!)
218
-
219
- 0.10.1
220
- =======================
221
- * Fix bug in linux wall time, also load with only relative paths so that you can use it to benchmark rubygems startup overhead,
222
- itself.
223
-
224
- 0.10.0
225
- =======================
226
- * Some rdoc changes, for linux wall time attempt to use higher granularity (thanks to all the contributors for this round!)
227
-
228
- 0.9.2
229
- =======================
230
- * Make graphviz work on 1.8.6
231
- * Roll back some 1.9.2 optimizations until I can figure out what caused them.
232
-
233
- 0.9.1
234
- =======================
235
- * Add a graphviz output
236
-
237
- 0.9.0
238
- =======================
239
- * measurements for recursive methods are now correct
240
- * gave up on splitting up recursive methods according to call depth
241
- * made it possible to eliminate methods from profiling results
242
- * new printer for call stack visualization
243
- * new printer to print several profiles in one run
244
- * HTML profiles contain Textmate links so you can jump to the source code easily
245
- * producing an event log is now a runtime option
246
-
247
- 0.7.10 (2009-01-22)
248
- =======================
249
- * fix SEGFAULT in 1.9
250
- * add new printer flat_printer_with_line_numbers
251
-
252
- 0.7.7 (2009-01-13)
253
- ======================
254
- * "fix" multi threading support for 1.9 http://redmine.ruby-lang.org/issues/show/2012
255
- * speedups
256
-
257
- 0.7.6 (2009-12-31)
258
- ======================
259
- * fix some tests for 1.9 (no real code changes)
260
-
261
- 0.7.5 (2009-12)
262
- ========================
263
- * fix a GC collection bug (nobu's patch).
264
- * correctly report recursive call depths (Kevin Scaldeferri).
265
- * sort methods on output (Kevin Scaldeferri).
266
-
267
- 0.7.3 (2008-12-09)
268
- ========================
269
- * Fixed compile error with new x86_64 code using GCC.
270
-
271
- 0.7.2 (2008-12-08)
272
- ========================
273
- * Fixed major bug in printing child methods in graph reports.
274
-
275
- * Fixes for supporting x86_64 machines (Diego Pettenò)
276
-
277
-
278
- 0.7.1 (2008-11-28)
279
- ========================
280
- * Added new AggregateCallInfo class for printers to
281
- make results easier to read. Take this call sequence
282
- for example:
283
-
284
- A B C
285
- | | |
286
- Z A A
287
- | |
288
- Z Z
289
-
290
- By default, ruby-prof will show that Z was called by 3 separate
291
- instances of A. In an IDE that is helpful but in a text report
292
- it is not since it makes the report much harder to read.
293
- As a result, printers now aggregate together callers (and children),
294
- matching ruby-prof's output from versions prior to 0.7.0.
295
-
296
- * Fixes for supporting x86_64 machines (Matt Sanford)
297
-
298
-
299
- 0.7.0 (2008-11-04)
300
- ========================
301
-
302
- Features
303
- --------
304
- * Added two new methods - RubyProf.resume and RubyProf.pause.
305
- RubyProf.resume takes an optional block, which ensures that
306
- RubyProf.pause is called. For example:
307
-
308
- 10.times do |i|
309
- RubyProf.resume do
310
- # Some long process
311
- end
312
- end
313
-
314
- result = RubyProf.stop
315
-
316
- * Added support for profiling tests that use Ruby's built-in
317
- unit test framework (ie, test derived from
318
- Test::Unit::TestCase). To enable profiling simply add
319
- the following line of code to your test class:
320
-
321
- include RubyProf::Test
322
-
323
- By default, profiling results are written to the current
324
- processes working directory. To change this, or other
325
- profiling options, simply modify the PROFILE_OPTIONS hash
326
- table as needed.
327
-
328
- * Used the new support for profiling test cases to revamp
329
- the way that Rails profiling works. For more information
330
- please refer to RubyProf's documentation.
331
-
332
- * Keep track of call stack for each method to enable more
333
- powerful profile visualizations in Integrated Development
334
- Environments (Hin Boean, work supported by CodeGear).
335
-
336
- * Expose measurements to Ruby (Jeremy Kemper).
337
-
338
- * Add support for additional memory measurements modes in Ruby 1.9 (Jeremy Kemper).
339
-
340
- * Add support for Lloyd Hilaiel's Ruby patch for measuring total heap size.
341
- See http://lloydforge.org/projects/ruby. (Jeremy Kemper).
342
-
343
-
344
- Fixes
345
- -------
346
- * RubyProf.profile no longer crashes if an exception is
347
- thrown during a profiling run.
348
-
349
- * Measure memory in fractional kilobytes rather than rounding down (Jeremy Kemper)
350
-
351
-
352
- 0.6.0 (2008-02-03)
353
- ========================
354
-
355
- ruby-prof 0.6.0 adds support for Ruby 1.9 and memory profiling.
356
-
357
- Features
358
- --------
359
- * Added support for ruby 1.9 (Shugo Maeda)
360
- * Added support for outputting printer results to a String, Array or IO
361
- object (Michael Granger)
362
- * Add new memory profiling mode. Note this mode depends on a
363
- patched Ruby interpreter (Alexander Dymo)
364
-
365
- Fixes
366
- -------
367
- * Improvements to GraphHtmlPrinter including updated documentation,
368
- fixes for min_time support, ability to specify templates using
369
- strings or filenames, and table layout fixes (Makoto Kuwata)
370
- * Fixes to scaling factor for calltrees so that precision is not lost
371
- due to the conversion to doubles (Sylvain Joyeux)
372
- * Changed constant ALLOCATED_OBJECTS to ALLOCATIONS in the C code to
373
- match the Ruby code (Sylvain Joyeux)
374
- * Added support for calltree printer to ruby-prof binary script (Sylvain Joyeux)
375
- * Fix support for the allocator measure mode to extconf.rb (Sylvain Joyeux)
376
- * Honor measure mode when specified on the command line (Sylvain Joyeux)
377
- * Sorting of methods by total time was incorrect (Dan Fitch, Charlie Savage)
378
- * Fix ruby-prof to work with the latest version of GEMS (Alexander Dymo)
379
- * Always define MEASURE_CPU_TIME and MEASURE_ALLOCATIONS in Ruby code, but
380
- set their values to nil if the functionality is not available.
381
-
382
-
383
- 0.5.2 (2007-07-19)
384
- ========================
385
-
386
- ruby-prof 0.5.2 is a bug fix release.
387
-
388
- Fixes
389
- -------
390
- * Include missing rails plugin
391
-
392
-
393
- 0.5.1 (2007-07-18)
394
- ========================
395
-
396
- ruby-prof 0.5.1 is a bug fix and performance release.
397
-
398
- Performance
399
- --------
400
- * Significantly reduced the number of thread lookups by
401
- caching the last executed thread.
402
-
403
- Fixes
404
- -------
405
- * Properly escape method names in HTML reports
406
- * Fix use of -m and --min-percent command line switches
407
- * Default source file information to ruby_runtime#0 for c calls
408
- * Moved rails_plugin to top level so it is more obvious
409
- * Updated rails_plugin to write reports to the current
410
- Rails log directory
411
- * Added additional tests
412
-
413
-
414
- 0.5.0 (2007-07-09)
415
- ========================
416
-
417
- Features
418
- --------
419
- * Added support for timing multi-threaded applications
420
- * Added support for 64 bit systems (patch from Diego 'Flameeyes' Petten)
421
- * Added suport for outputting data in the format used by
422
- KCacheGrind (patch from Carl Shimer)
423
- * Add filename and line numbers to call tree information (patch from Carl Shimer)
424
- * Added Visual Studio 2005 project file.
425
- * Added replace-progname switch, als rcov.
426
- * Added better support for recursive methods
427
- * Added better support for profiling Rails applications
428
-
429
- Fixes
430
- -------
431
- * Fixes bug when the type of an attached object (singleton) is inherited
432
- from T_OBJECT as opposed to being a T_OBJECT (identified by Francis Cianfrocca)
433
- * ruby-prof now works in IRB.
434
- * Fix sort order in reports.
435
- * Fixed rdoc compile error.
436
- * Fix tabs in erb template for graph html report on windows.
437
-
438
- 0.4.1 (2006-06-26)
439
- ========================
440
-
441
- Features
442
- --------
443
- * Added a RubyProf.running? method to indicate whether a profile is in progress.
444
- * Added tgz and zip archives to release
445
-
446
- Fixes
447
- -------
448
- * Duplicate method names are now allowed
449
- * The documentation has been updated to show the correct API usage is RubyProf.stop not RubyProf.end
450
-
451
-
452
- 0.4.0 (2006-06-16)
453
- ========================
454
- Features
455
- --------
456
- * added support for call graphs
457
- * added support for printers. Currently there is a FlatPrinter,
458
- GraphPrinter and GraphHtmlPrinter.
459
- * added support for recursive methods
460
- * added Windows support
461
- * now packaged as a RubyGem
462
-
463
- Fixes
464
- -------
465
- * Fixes bug where RubyProf would crash depending on the
466
- way it was invoked - for example, it did not run when
467
- used with Arachno Ruby's customized version of Ruby.
1
+ 1.1.0 (2019-12-14)
2
+ =====================
3
+ Changes
4
+
5
+ * Reimplement merge_fibers (Charlie Savage)
6
+ * Fix crash caused by threads being freed when profiles are freed (Charlie Savage)
7
+
8
+ 1.0.0 (2019-07-29)
9
+ =====================
10
+ ruby-prof's development stretches all the way back to 2005. Fourteen years later, it seems time for version 1.0!
11
+ Version 1.0 is a significant update that greatly improves the internals of ruby-prof and adds a number of improvements.
12
+
13
+ Changes (Charlie Savage):
14
+
15
+ * Profiling is significantly faster - 5x in some cases
16
+ * Recursive profiles are finally handled correctly. Yeah!!!
17
+ * Redesigned reports (Chirs Whitefield)
18
+ * New documentation website (https://ruby-prof.github.io)
19
+ * The ability to measure allocations and memory usage using a standard (unpatched) version of ruby
20
+ * The ability to save and reload profiling results for later analysis
21
+ * The ability track object allocations
22
+
23
+ At the same time, it was also time to remove old code and deprecated methods. These changes include (Charlie Savage):
24
+
25
+ * Drop support for old versions of ruby. Currently 2.4 and up are required.
26
+ * Remove support for method elimination (instead use method exclusion).
27
+ * Remove the CPU_TIME measurement mode since it duplicates the PROCESS_TIME mode and required inline assembly code
28
+ * Remove the GC_TIME and GC_RUNS measurement modes since they required patched ruby versions. In modern ruby it is possible to reimplement this functionality, but it does not seem of that much value (shout out if you want it back).
29
+ * Merge the RubyProf::FlatPrinterWithLineNumbers printer into RubyProf::FlatPrinter.
30
+ * Removed support for RUBY_PROF_EDITOR_URI environment variable that specified the link scheme. This features was more confusing then helpful.
31
+
32
+
33
+ 0.18.0 (2019-05-27)
34
+ =====================
35
+ Fixes
36
+ ------
37
+ * Fix grouping by thread/fiber (Charlie Savage)
38
+ * Fix include/exclude thread checking (Charlie Savage)
39
+ * Fix failing tests (Charlie Savage)
40
+ * Fix grouping by thread_id and fiber_id (Charlie Savage)
41
+ * Update Visual Studio solution to 2019 (Charlie Savage)
42
+ * Adjust AbstractPrinter#editor_uri so it's possible to disable uri (Maciek Dubiński)-
43
+ * Fix -X/--exclude-file option not working (John Lindgren)
44
+ * Different directory for middleware output in readme (Aldric Giacomoni)
45
+ * Fixing spelling mistakes and typos (David Kennedy and Roger Pack)
46
+ * Add "allow_exceptions" option to Profile (Ryan Duryea)
47
+ * Update readme (Jan Piotrowski, Nathan Seither, victor-am)
48
+ * Travis updates (Niocals Leger and Charlie Savage)
49
+ * Fix NewRelic module detection in exclude_common_methods! (Ben Hughes)
50
+
51
+ 0.17.0 (2017-12-17)
52
+ =====================
53
+ * Changed method/class names produced by the callgrind printer to be more kcachegrind
54
+ friendly (thx to Nelson Gauthier and Ben Hughes, see https://github.com/ruby-prof/ruby-prof/pull/200).
55
+ * Recursive instances of a method call are now dtected during profiling (thx to Nelson Gauthier and
56
+ Ben Hughes, see https://github.com/ruby-prof/ruby-prof/pull/201).
57
+ * Methods can now be ignored during a profiling run instead of eliminating them
58
+ after a profile run, which has been deprecated (thx to Nelson Gauthier and Ben Hughes,
59
+ see https://github.com/ruby-prof/ruby-prof/pull/202).
60
+ * Use RUBY_PROF_EDITOR_URI=emacs to open source code links in the one true editor.
61
+ (thx Alexander Egorov, see https://github.com/ruby-prof/ruby-prof/pull/183 and
62
+ https://github.com/typester/emacs-handler).
63
+ * Fixed that calling profile.stop would stop profiling all active profiling runs.
64
+ * Fixed that remembering parent call frame pointer before stack reallocation could cause a segfault.
65
+
66
+ 0.16.2 (2016-08-25)
67
+ =====================
68
+ * fixed incorrect setting of RUBY_VERSION macro
69
+
70
+ 0.16.1 (2016-08-24)
71
+ =====================
72
+ * fixed compile problem with ruby 2.1.10
73
+
74
+ 0.16.0 (2016-08-24)
75
+ =====================
76
+ * ruby-prof can now be installed if ruby has been compiled with --disable-gems or
77
+ RUBYOPT includes --disable-gems (thx to Arthur Nogueira Neves)
78
+ * Profile.new now accepts and prefers an options hash:
79
+ - measure_mode: one of the RubyProf measure mode constants
80
+ - exclude_threads: an array of threads to ignore when collecting profile data
81
+ - include_threads: an array of threads to include when collecting profile data
82
+ - merge_fibers: whether or not to merge the profile data for all fibers under their creating thread
83
+ * overhauled printer for cachegrind profiles:
84
+ - profile data for each thread dumped to a separate file, as kcachegrind does not
85
+ fully implement the cachegrind specification
86
+ - this required a change in interface: it's now necessary to specify a directory
87
+ where to dump the cachegrind files
88
+ - naming convention for cachegrind files changed so that kcachegrind shows them
89
+ all in the open dialog
90
+ * improved Rack middleware:
91
+ - it's now possible to use the MultiPrinter
92
+ - new option ignore_existing_threads: will ignore all prexisiting threads
93
+ when profiling a request, except the thread perfoming the request.
94
+ - new option request_thread_only: will ignore all preexisting threads, but also
95
+ all threads spwaned during the execution of the rack request.
96
+ - new option merge_fibers: whether or not to merge the profile data for all fibers under their creating thread
97
+ * fixed setting threshold bug when displaying stack profiles (thx to Michal Konarski)
98
+ * code related to printing profiles is now autoloaded for efficiency (thx to Dave Gynn)
99
+
100
+ 0.15.9 (2015-12-08)
101
+ ======================
102
+ * rack profiler now supports lambdas for generating profile paths (thx to Jean Rougé)
103
+ * fixed a bug when printing graph profiles
104
+
105
+ 0.15.8 (2015-04-24)
106
+ ======================
107
+ * added missing assets to gem build
108
+ * fixed randomly failing test
109
+
110
+ 0.15.7 (2015-04-23)
111
+ ======================
112
+ * html profiles are now single page (thx to Thomas Leishman)
113
+
114
+ 0.15.6 (2015-02-22)
115
+ ======================
116
+ * improved upon computing children time in graph printers
117
+
118
+ 0.15.5 (2015-02-22)
119
+ ======================
120
+ * changed output format of flat_printer_with_line_number
121
+ * support using multi printer from command line (Dov Murik)
122
+
123
+ 0.15.4 (2015-02-14)
124
+ ======================
125
+ * using env variable to specify mesaurement mode work again
126
+ * measuring memory/object allocations works for 2.1 adn 2.2 again
127
+
128
+ 0.15.3 (2015-01-16)
129
+ ======================
130
+ * support ruby 2.2.0
131
+
132
+ 0.15.2 (2014-05-20)
133
+ ======================
134
+ * rack middleware creates print dir for profile result (Neng)
135
+
136
+ 0.15.1 (2014-05-20)
137
+ ======================
138
+ * added license to gemspec
139
+
140
+ 0.15.0 (2014-05-02)
141
+ ======================
142
+ * improved cpu time measurement (Charlie Somerville)
143
+
144
+ 0.14.2 (2014-01-05)
145
+ ======================
146
+ * hopefully fixed compile problem under Windows
147
+
148
+ 0.14.0 (2014-01-02)
149
+ ======================
150
+ * support ruby 2.1.0
151
+ * dropped support for 1.8.x, 1.9.1 and 1.9.2
152
+
153
+ 0.13.1 (2013-12-14)
154
+ ======================
155
+ * speed up for displaying large call stacks (Benjamin Quoming)
156
+
157
+ 0.13 (2013-03-10)
158
+ ======================
159
+ * support fibers on 1.9.x+
160
+ * improved display for very wide call stacks (Sammy Larbi)
161
+
162
+ 0.12.2 (2013-02-13)
163
+ ======================
164
+ * Fixed segfault when using falcon or railsexpress patches for 1.9.3
165
+
166
+ 0.12.1 (2013-01-07)
167
+ ======================
168
+ * Add back in pause/resume support since Rails uses it
169
+
170
+ 0.12.0 (2013-01-06)
171
+ ======================
172
+ * Ruby 2.0.0 support (Charlie Savage)
173
+ * Fix issue where profiling results could exceed 100% if profile code had multiple top level methods (Charlie Savage)
174
+ * Replaced RubyProf::Thread#top_method with RubyProf::Thread#top_methods (Charlie Savage)
175
+ * Added RubyProf::Thread#total_time (Charlie Savage)
176
+ * Remove the -r and -e command line options. If you need specific libraries or code profiled then add them
177
+ to your code (Charlie Savage).
178
+ * Rewrite ruby-prof script to be more self-contained (Gary Weaver)
179
+ * Fix list formatting in readme (Thilo Rusche)
180
+ * Remove pause/resume support since its buggy and complicates the code
181
+
182
+ 0.11.3 (2012-12-27)
183
+ ======================
184
+ * Prefix c functions with prof_ to avoid name conflicts (Kenta Murata)
185
+ * Update ruby-prof script to avoid seg faults (Gary Weaver)
186
+ * Rakefile updates (Roger Pack)
187
+ * Fix regexp file reading (Gilbert Roulot)
188
+ * Update documentation (Timo Schilling)
189
+ * Fix up ruby warnings (Mike Gehard)
190
+ * Remove duplicate code (Chas Lemley)
191
+
192
+
193
+ 0.11.2 (2012-05-06)
194
+ ======================
195
+ * Fix compile issue with BOOL. Should be _Bool for C99.
196
+
197
+
198
+ 0.11.1 (2012-05-06)
199
+ ======================
200
+ * Added option --exclude-common-callbacks, plus exclude #map and #inject in common cycles (Vasily Fedoseyev)
201
+ * Add option --exclude-common-cycles to exclude common iterators (Vasily Fedoseyev)
202
+ * Allow method elimination from command line via '-x' and '-X' keys (Vasily Fedoseyev)
203
+
204
+
205
+ 0.11.0 (2012-05-05)
206
+ ======================
207
+ * Fix pause/resume so it actually works and add tests (David Barri)
208
+ * Resume now returns the result of the block when given (David Barri)
209
+ * Make recursive method explanation more clear (Charlie Savage)
210
+ * Fix ruby warnings (Charlie Savage)
211
+ * Toggle GC.enable_stats when profiling for memory to get the data (Vasily Fedoseyev)
212
+ * Fix patched ruby support and remove some warnings (Vasily Fedoseyev)
213
+ * Fix tests on 1.8.7 (rogerdpack)
214
+
215
+
216
+ 0.11.0.rc3 (2012-03-26)
217
+ ======================
218
+ * Include missing files in gemspec (Charlie Savage).
219
+
220
+
221
+ 0.11.0.rc2 (2012-03-25)
222
+ ======================
223
+ * Lots of improvements to Rack handler - this can be used to profile requests
224
+ in Rails and other rack-based ruby web frameworks (Charlie Savage).
225
+ * Reimplemented handling of recursive calls using CallInfoVisitor (Charlie Savage).
226
+ * Fix bug where child times were not correctly reported in complicated
227
+ call graphs with recursion like in frameworks like Rails (Charlie Savage).
228
+ * Add in recursive call information to Flat, Graph and Graph HTML reports (Charlie Savage).
229
+ * Add in new thread class add added RubyProf::Thread#top_method to
230
+ make report generation easier (Charlie Savage).
231
+ * Add in CallInfoVisitor class to make it easy to iterate over a call graph (Charlie Savage).
232
+ * Add in CallInfoPrinter to make it visualize RubyProf's internal call graphs (Charlie Savage).
233
+ * Significant updates to documentation (Charlie Savage).
234
+ * More c code cleanup (Charlie Savage).
235
+
236
+ 0.11.0.rc1 (2012-03-24)
237
+ ======================
238
+ * Big internal refactoring of C code to make RubyProf easier to understand and extend (Charlie Savage).
239
+ * Profile results are now returned as instances of a new class RubyProf::Profile. The old api
240
+ is supported via a compatability layer that at some point will be deprecated. (Charlie Savage).
241
+ * On Windows, use QueryPerformanceCounter and QueryPerformanceFrequency to measure CPU time instead
242
+ of rdtsc. This change is based on Microsoft's recommendation (Charlie Savage).
243
+ * On Windows use GetProcessTimes to return real PROCESS_TIME times instead of wall times (Charlie Savage).
244
+ * Split out tests for each time of measurement (cpu_time, process_time, etc.) (Charlie Savage).
245
+ * Dropped support for Ruby 1.8.4 and 1.8.6 and 1.9.0 (Charlie Savage).
246
+ * Added support for sorting results by total, self, wait and child times (Jan Suchal)
247
+ * Added tests for sorting behaviour & removed options from constructor to print method (Jan Suchal)
248
+ * Fix line number tests due to changes at top of file (Charlie Savage).
249
+ * Add encoding statement to top of all files for Ruby 1.9.x compatability (Charlie Savage).
250
+ * Add def file for VC to avoid the whole declspec annoyance (Charlie Savage).
251
+ * Update test suite to ensure current working directory is correct (Charlie Savage).
252
+ * Modernize gem file and remove various custom/home grown solutions that aren't needed anymore (Charlie Savage).
253
+ * Remove custom mingw build scripts, use rake compiler instead (Charlie Savage).
254
+ * Fixes for compiling with VC 2010 (Charlie Savage).
255
+
256
+ 0.10.8 (2011-07-06)
257
+ ======================
258
+ * 1.9.3 super class (Roger Pack)
259
+
260
+ 0.10.7 (2011-05-09)
261
+ ======================
262
+ * Fix a bug with REE's GC stats. Issue #53 [thanks graaff]
263
+
264
+ 0.10.6 (2011-04-29)
265
+ ======================
266
+ * Slightly more normalized url for linux/windows links to files.
267
+
268
+ 0.10.5 (2011-04-20)
269
+ =======================
270
+ * 1.8.6 compat for -v command (bug fix)
271
+
272
+ 0.10.4 (2011-04-20)
273
+ =======================
274
+ * Faster load time for ruby-prof itself.
275
+
276
+ 0.10.3
277
+ =======================
278
+ * Can cleanly load before rubygems now.
279
+
280
+ 0.10.2
281
+ =======================
282
+ * Fix for 1.9.2, os x for latest commits (thanks skaes!)
283
+
284
+ 0.10.1
285
+ =======================
286
+ * Fix bug in linux wall time, also load with only relative paths so that you can use it to benchmark rubygems startup overhead,
287
+ itself.
288
+
289
+ 0.10.0
290
+ =======================
291
+ * Some rdoc changes, for linux wall time attempt to use higher granularity (thanks to all the contributors for this round!)
292
+
293
+ 0.9.2
294
+ =======================
295
+ * Make graphviz work on 1.8.6
296
+ * Roll back some 1.9.2 optimizations until I can figure out what caused them.
297
+
298
+ 0.9.1
299
+ =======================
300
+ * Add a graphviz output
301
+
302
+ 0.9.0
303
+ =======================
304
+ * measurements for recursive methods are now correct
305
+ * gave up on splitting up recursive methods according to call depth
306
+ * made it possible to eliminate methods from profiling results
307
+ * new printer for call stack visualization
308
+ * new printer to print several profiles in one run
309
+ * HTML profiles contain Textmate links so you can jump to the source code easily
310
+ * producing an event log is now a runtime option
311
+
312
+ 0.7.10 (2009-01-22)
313
+ =======================
314
+ * fix SEGFAULT in 1.9
315
+ * add new printer flat_printer_with_line_numbers
316
+
317
+ 0.7.7 (2009-01-13)
318
+ ======================
319
+ * "fix" multi threading support for 1.9 http://redmine.ruby-lang.org/issues/show/2012
320
+ * speedups
321
+
322
+ 0.7.6 (2009-12-31)
323
+ ======================
324
+ * fix some tests for 1.9 (no real code changes)
325
+
326
+ 0.7.5 (2009-12)
327
+ ========================
328
+ * fix a GC collection bug (nobu's patch).
329
+ * correctly report recursive call depths (Kevin Scaldeferri).
330
+ * sort methods on output (Kevin Scaldeferri).
331
+
332
+ 0.7.3 (2008-12-09)
333
+ ========================
334
+ * Fixed compile error with new x86_64 code using GCC.
335
+
336
+ 0.7.2 (2008-12-08)
337
+ ========================
338
+ * Fixed major bug in printing child methods in graph reports.
339
+
340
+ * Fixes for supporting x86_64 machines (Diego Pettenò)
341
+
342
+
343
+ 0.7.1 (2008-11-28)
344
+ ========================
345
+ * Added new AggregateCallInfo class for printers to
346
+ make results easier to read. Take this call sequence
347
+ for example:
348
+
349
+ A B C
350
+ | | |
351
+ Z A A
352
+ | |
353
+ Z Z
354
+
355
+ By default, ruby-prof will show that Z was called by 3 separate
356
+ instances of A. In an IDE that is helpful but in a text report
357
+ it is not since it makes the report much harder to read.
358
+ As a result, printers now aggregate together callers (and children),
359
+ matching ruby-prof's output from versions prior to 0.7.0.
360
+
361
+ * Fixes for supporting x86_64 machines (Matt Sanford)
362
+
363
+
364
+ 0.7.0 (2008-11-04)
365
+ ========================
366
+
367
+ Features
368
+ --------
369
+ * Added two new methods - RubyProf.resume and RubyProf.pause.
370
+ RubyProf.resume takes an optional block, which ensures that
371
+ RubyProf.pause is called. For example:
372
+
373
+ 10.times do |i|
374
+ RubyProf.resume do
375
+ # Some long process
376
+ end
377
+ end
378
+
379
+ result = RubyProf.stop
380
+
381
+ * Added support for profiling tests that use Ruby's built-in
382
+ unit test framework (ie, test derived from
383
+ Test::Unit::TestCase). To enable profiling simply add
384
+ the following line of code to your test class:
385
+
386
+ include RubyProf::Test
387
+
388
+ By default, profiling results are written to the current
389
+ processes working directory. To change this, or other
390
+ profiling options, simply modify the PROFILE_OPTIONS hash
391
+ table as needed.
392
+
393
+ * Used the new support for profiling test cases to revamp
394
+ the way that Rails profiling works. For more information
395
+ please refer to RubyProf's documentation.
396
+
397
+ * Keep track of call stack for each method to enable more
398
+ powerful profile visualizations in Integrated Development
399
+ Environments (Hin Boean, work supported by CodeGear).
400
+
401
+ * Expose measurements to Ruby (Jeremy Kemper).
402
+
403
+ * Add support for additional memory measurements modes in Ruby 1.9 (Jeremy Kemper).
404
+
405
+ * Add support for Lloyd Hilaiel's Ruby patch for measuring total heap size.
406
+ See http://lloydforge.org/projects/ruby. (Jeremy Kemper).
407
+
408
+
409
+ Fixes
410
+ -------
411
+ * RubyProf.profile no longer crashes if an exception is
412
+ thrown during a profiling run.
413
+
414
+ * Measure memory in fractional kilobytes rather than rounding down (Jeremy Kemper)
415
+
416
+
417
+ 0.6.0 (2008-02-03)
418
+ ========================
419
+
420
+ ruby-prof 0.6.0 adds support for Ruby 1.9 and memory profiling.
421
+
422
+ Features
423
+ --------
424
+ * Added support for ruby 1.9 (Shugo Maeda)
425
+ * Added support for outputting printer results to a String, Array or IO
426
+ object (Michael Granger)
427
+ * Add new memory profiling mode. Note this mode depends on a
428
+ patched Ruby interpreter (Alexander Dymo)
429
+
430
+ Fixes
431
+ -------
432
+ * Improvements to GraphHtmlPrinter including updated documentation,
433
+ fixes for min_time support, ability to specify templates using
434
+ strings or filenames, and table layout fixes (Makoto Kuwata)
435
+ * Fixes to scaling factor for calltrees so that precision is not lost
436
+ due to the conversion to doubles (Sylvain Joyeux)
437
+ * Changed constant ALLOCATED_OBJECTS to ALLOCATIONS in the C code to
438
+ match the Ruby code (Sylvain Joyeux)
439
+ * Added support for calltree printer to ruby-prof binary script (Sylvain Joyeux)
440
+ * Fix support for the allocator measure mode to extconf.rb (Sylvain Joyeux)
441
+ * Honor measure mode when specified on the command line (Sylvain Joyeux)
442
+ * Sorting of methods by total time was incorrect (Dan Fitch, Charlie Savage)
443
+ * Fix ruby-prof to work with the latest version of GEMS (Alexander Dymo)
444
+ * Always define MEASURE_CPU_TIME and MEASURE_ALLOCATIONS in Ruby code, but
445
+ set their values to nil if the functionality is not available.
446
+
447
+
448
+ 0.5.2 (2007-07-19)
449
+ ========================
450
+
451
+ ruby-prof 0.5.2 is a bug fix release.
452
+
453
+ Fixes
454
+ -------
455
+ * Include missing rails plugin
456
+
457
+
458
+ 0.5.1 (2007-07-18)
459
+ ========================
460
+
461
+ ruby-prof 0.5.1 is a bug fix and performance release.
462
+
463
+ Performance
464
+ --------
465
+ * Significantly reduced the number of thread lookups by
466
+ caching the last executed thread.
467
+
468
+ Fixes
469
+ -------
470
+ * Properly escape method names in HTML reports
471
+ * Fix use of -m and --min-percent command line switches
472
+ * Default source file information to ruby_runtime#0 for c calls
473
+ * Moved rails_plugin to top level so it is more obvious
474
+ * Updated rails_plugin to write reports to the current
475
+ Rails log directory
476
+ * Added additional tests
477
+
478
+
479
+ 0.5.0 (2007-07-09)
480
+ ========================
481
+
482
+ Features
483
+ --------
484
+ * Added support for timing multi-threaded applications
485
+ * Added support for 64 bit systems (patch from Diego 'Flameeyes' Petten)
486
+ * Added suport for outputting data in the format used by
487
+ KCacheGrind (patch from Carl Shimer)
488
+ * Add filename and line numbers to call tree information (patch from Carl Shimer)
489
+ * Added Visual Studio 2005 project file.
490
+ * Added replace-progname switch, als rcov.
491
+ * Added better support for recursive methods
492
+ * Added better support for profiling Rails applications
493
+
494
+ Fixes
495
+ -------
496
+ * Fixes bug when the type of an attached object (singleton) is inherited
497
+ from T_OBJECT as opposed to being a T_OBJECT (identified by Francis Cianfrocca)
498
+ * ruby-prof now works in IRB.
499
+ * Fix sort order in reports.
500
+ * Fixed rdoc compile error.
501
+ * Fix tabs in erb template for graph html report on windows.
502
+
503
+ 0.4.1 (2006-06-26)
504
+ ========================
505
+
506
+ Features
507
+ --------
508
+ * Added a RubyProf.running? method to indicate whether a profile is in progress.
509
+ * Added tgz and zip archives to release
510
+
511
+ Fixes
512
+ -------
513
+ * Duplicate method names are now allowed
514
+ * The documentation has been updated to show the correct API usage is RubyProf.stop not RubyProf.end
515
+
516
+
517
+ 0.4.0 (2006-06-16)
518
+ ========================
519
+ Features
520
+ --------
521
+ * added support for call graphs
522
+ * added support for printers. Currently there is a FlatPrinter,
523
+ GraphPrinter and GraphHtmlPrinter.
524
+ * added support for recursive methods
525
+ * added Windows support
526
+ * now packaged as a RubyGem
527
+
528
+ Fixes
529
+ -------
530
+ * Fixes bug where RubyProf would crash depending on the
531
+ way it was invoked - for example, it did not run when
532
+ used with Arachno Ruby's customized version of Ruby.