ruby-prof 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES +500 -482
  3. data/LICENSE +24 -24
  4. data/README.rdoc +487 -485
  5. data/Rakefile +113 -113
  6. data/bin/ruby-prof +345 -345
  7. data/bin/ruby-prof-check-trace +45 -45
  8. data/examples/flat.txt +50 -50
  9. data/examples/graph.dot +84 -84
  10. data/examples/graph.html +823 -823
  11. data/examples/graph.txt +139 -139
  12. data/examples/multi.flat.txt +23 -23
  13. data/examples/multi.graph.html +760 -760
  14. data/examples/multi.grind.dat +114 -114
  15. data/examples/multi.stack.html +547 -547
  16. data/examples/stack.html +547 -547
  17. data/ext/ruby_prof/extconf.rb +68 -68
  18. data/ext/ruby_prof/rp_call_info.c +425 -425
  19. data/ext/ruby_prof/rp_call_info.h +53 -53
  20. data/ext/ruby_prof/rp_measure.c +40 -40
  21. data/ext/ruby_prof/rp_measure.h +45 -45
  22. data/ext/ruby_prof/rp_measure_allocations.c +76 -76
  23. data/ext/ruby_prof/rp_measure_cpu_time.c +136 -136
  24. data/ext/ruby_prof/rp_measure_gc_runs.c +73 -73
  25. data/ext/ruby_prof/rp_measure_gc_time.c +60 -60
  26. data/ext/ruby_prof/rp_measure_memory.c +77 -77
  27. data/ext/ruby_prof/rp_measure_process_time.c +71 -71
  28. data/ext/ruby_prof/rp_measure_wall_time.c +45 -45
  29. data/ext/ruby_prof/rp_method.c +630 -636
  30. data/ext/ruby_prof/rp_method.h +75 -75
  31. data/ext/ruby_prof/rp_stack.c +173 -173
  32. data/ext/ruby_prof/rp_stack.h +63 -63
  33. data/ext/ruby_prof/rp_thread.c +277 -276
  34. data/ext/ruby_prof/rp_thread.h +27 -27
  35. data/ext/ruby_prof/ruby_prof.c +794 -774
  36. data/ext/ruby_prof/ruby_prof.h +60 -59
  37. data/ext/ruby_prof/vc/ruby_prof.sln +20 -21
  38. data/ext/ruby_prof/vc/{ruby_prof_20.vcxproj → ruby_prof.vcxproj} +31 -0
  39. data/lib/ruby-prof.rb +68 -68
  40. data/lib/ruby-prof/aggregate_call_info.rb +76 -76
  41. data/lib/ruby-prof/assets/call_stack_printer.css.html +116 -116
  42. data/lib/ruby-prof/assets/call_stack_printer.js.html +384 -384
  43. data/lib/ruby-prof/call_info.rb +115 -115
  44. data/lib/ruby-prof/call_info_visitor.rb +40 -40
  45. data/lib/ruby-prof/compatibility.rb +179 -178
  46. data/lib/ruby-prof/method_info.rb +121 -121
  47. data/lib/ruby-prof/printers/abstract_printer.rb +104 -103
  48. data/lib/ruby-prof/printers/call_info_printer.rb +41 -41
  49. data/lib/ruby-prof/printers/call_stack_printer.rb +265 -265
  50. data/lib/ruby-prof/printers/call_tree_printer.rb +143 -143
  51. data/lib/ruby-prof/printers/dot_printer.rb +132 -132
  52. data/lib/ruby-prof/printers/flat_printer.rb +70 -70
  53. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +83 -83
  54. data/lib/ruby-prof/printers/graph_html_printer.rb +249 -249
  55. data/lib/ruby-prof/printers/graph_printer.rb +116 -116
  56. data/lib/ruby-prof/printers/multi_printer.rb +84 -84
  57. data/lib/ruby-prof/profile.rb +26 -26
  58. data/lib/ruby-prof/profile/exclude_common_methods.rb +207 -201
  59. data/lib/ruby-prof/profile/legacy_method_elimination.rb +50 -49
  60. data/lib/ruby-prof/rack.rb +174 -174
  61. data/lib/ruby-prof/task.rb +147 -147
  62. data/lib/ruby-prof/thread.rb +35 -35
  63. data/lib/ruby-prof/version.rb +3 -3
  64. data/lib/unprof.rb +10 -10
  65. data/ruby-prof.gemspec +58 -58
  66. data/test/abstract_printer_test.rb +53 -0
  67. data/test/aggregate_test.rb +136 -136
  68. data/test/basic_test.rb +128 -128
  69. data/test/block_test.rb +74 -74
  70. data/test/call_info_test.rb +78 -78
  71. data/test/call_info_visitor_test.rb +31 -31
  72. data/test/duplicate_names_test.rb +32 -32
  73. data/test/dynamic_method_test.rb +55 -55
  74. data/test/enumerable_test.rb +21 -21
  75. data/test/exceptions_test.rb +24 -16
  76. data/test/exclude_methods_test.rb +146 -146
  77. data/test/exclude_threads_test.rb +53 -53
  78. data/test/fiber_test.rb +79 -79
  79. data/test/issue137_test.rb +63 -63
  80. data/test/line_number_test.rb +80 -80
  81. data/test/measure_allocations_test.rb +26 -26
  82. data/test/measure_cpu_time_test.rb +212 -213
  83. data/test/measure_gc_runs_test.rb +32 -32
  84. data/test/measure_gc_time_test.rb +36 -36
  85. data/test/measure_memory_test.rb +33 -33
  86. data/test/measure_process_time_test.rb +61 -63
  87. data/test/measure_wall_time_test.rb +255 -255
  88. data/test/method_elimination_test.rb +84 -84
  89. data/test/module_test.rb +45 -45
  90. data/test/multi_printer_test.rb +104 -104
  91. data/test/no_method_class_test.rb +15 -15
  92. data/test/pause_resume_test.rb +166 -166
  93. data/test/prime.rb +54 -54
  94. data/test/printers_test.rb +275 -275
  95. data/test/printing_recursive_graph_test.rb +127 -127
  96. data/test/rack_test.rb +157 -157
  97. data/test/recursive_test.rb +215 -215
  98. data/test/singleton_test.rb +38 -38
  99. data/test/stack_printer_test.rb +77 -78
  100. data/test/stack_test.rb +138 -138
  101. data/test/start_stop_test.rb +112 -112
  102. data/test/test_helper.rb +267 -275
  103. data/test/thread_test.rb +187 -187
  104. data/test/unique_call_path_test.rb +202 -202
  105. data/test/yarv_test.rb +55 -55
  106. metadata +17 -96
  107. data/doc/LICENSE.html +0 -115
  108. data/doc/README_rdoc.html +0 -637
  109. data/doc/Rack.html +0 -96
  110. data/doc/Rack/RubyProf.html +0 -233
  111. data/doc/Rack/RubyProf/RackProfiler.html +0 -343
  112. data/doc/RubyProf.html +0 -974
  113. data/doc/RubyProf/AbstractPrinter.html +0 -625
  114. data/doc/RubyProf/AggregateCallInfo.html +0 -552
  115. data/doc/RubyProf/CallInfo.html +0 -579
  116. data/doc/RubyProf/CallInfoPrinter.html +0 -121
  117. data/doc/RubyProf/CallInfoVisitor.html +0 -199
  118. data/doc/RubyProf/CallStackPrinter.html +0 -1127
  119. data/doc/RubyProf/CallTreePrinter.html +0 -725
  120. data/doc/RubyProf/Cmd.html +0 -637
  121. data/doc/RubyProf/DeprecationWarnings.html +0 -148
  122. data/doc/RubyProf/DotPrinter.html +0 -258
  123. data/doc/RubyProf/FlatPrinter.html +0 -164
  124. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +0 -210
  125. data/doc/RubyProf/GraphHtmlPrinter.html +0 -558
  126. data/doc/RubyProf/GraphPrinter.html +0 -140
  127. data/doc/RubyProf/MethodInfo.html +0 -676
  128. data/doc/RubyProf/MultiPrinter.html +0 -574
  129. data/doc/RubyProf/Profile.html +0 -908
  130. data/doc/RubyProf/Profile/ExcludeCommonMethods.html +0 -411
  131. data/doc/RubyProf/Profile/LegacyMethodElimination.html +0 -158
  132. data/doc/RubyProf/ProfileTask.html +0 -491
  133. data/doc/RubyProf/Thread.html +0 -275
  134. data/doc/created.rid +0 -33
  135. data/doc/css/fonts.css +0 -167
  136. data/doc/css/rdoc.css +0 -590
  137. data/doc/examples/flat_txt.html +0 -139
  138. data/doc/examples/graph_html.html +0 -910
  139. data/doc/examples/graph_txt.html +0 -248
  140. data/doc/fonts/Lato-Light.ttf +0 -0
  141. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  142. data/doc/fonts/Lato-Regular.ttf +0 -0
  143. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  144. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  145. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  146. data/doc/images/add.png +0 -0
  147. data/doc/images/arrow_up.png +0 -0
  148. data/doc/images/brick.png +0 -0
  149. data/doc/images/brick_link.png +0 -0
  150. data/doc/images/bug.png +0 -0
  151. data/doc/images/bullet_black.png +0 -0
  152. data/doc/images/bullet_toggle_minus.png +0 -0
  153. data/doc/images/bullet_toggle_plus.png +0 -0
  154. data/doc/images/date.png +0 -0
  155. data/doc/images/delete.png +0 -0
  156. data/doc/images/find.png +0 -0
  157. data/doc/images/loadingAnimation.gif +0 -0
  158. data/doc/images/macFFBgHack.png +0 -0
  159. data/doc/images/package.png +0 -0
  160. data/doc/images/page_green.png +0 -0
  161. data/doc/images/page_white_text.png +0 -0
  162. data/doc/images/page_white_width.png +0 -0
  163. data/doc/images/plugin.png +0 -0
  164. data/doc/images/ruby.png +0 -0
  165. data/doc/images/tag_blue.png +0 -0
  166. data/doc/images/tag_green.png +0 -0
  167. data/doc/images/transparent.png +0 -0
  168. data/doc/images/wrench.png +0 -0
  169. data/doc/images/wrench_orange.png +0 -0
  170. data/doc/images/zoom.png +0 -0
  171. data/doc/index.html +0 -666
  172. data/doc/js/darkfish.js +0 -161
  173. data/doc/js/jquery.js +0 -4
  174. data/doc/js/navigation.js +0 -142
  175. data/doc/js/navigation.js.gz +0 -0
  176. data/doc/js/search.js +0 -109
  177. data/doc/js/search_index.js +0 -1
  178. data/doc/js/search_index.js.gz +0 -0
  179. data/doc/js/searcher.js +0 -229
  180. data/doc/js/searcher.js.gz +0 -0
  181. data/doc/table_of_contents.html +0 -1052
  182. data/examples/cachegrind.out.1 +0 -114
  183. data/examples/cachegrind.out.1.32313213 +0 -114
  184. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +0 -108
  185. data/ext/ruby_prof/vc/ruby_prof_19.vcxproj +0 -110
@@ -1,725 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>class RubyProf::CallTreePrinter - ruby-prof</title>
8
-
9
- <script type="text/javascript">
10
- var rdoc_rel_prefix = "../";
11
- var index_rel_prefix = "../";
12
- </script>
13
-
14
- <script src="../js/jquery.js"></script>
15
- <script src="../js/darkfish.js"></script>
16
-
17
- <link href="../css/fonts.css" rel="stylesheet">
18
- <link href="../css/rdoc.css" rel="stylesheet">
19
-
20
-
21
-
22
- <body id="top" role="document" class="class">
23
- <nav role="navigation">
24
- <div id="project-navigation">
25
- <div id="home-section" role="region" title="Quick navigation" class="nav-section">
26
- <h2>
27
- <a href="../index.html" rel="home">Home</a>
28
- </h2>
29
-
30
- <div id="table-of-contents-navigation">
31
- <a href="../table_of_contents.html#pages">Pages</a>
32
- <a href="../table_of_contents.html#classes">Classes</a>
33
- <a href="../table_of_contents.html#methods">Methods</a>
34
- </div>
35
- </div>
36
-
37
- <div id="search-section" role="search" class="project-section initially-hidden">
38
- <form action="#" method="get" accept-charset="utf-8">
39
- <div id="search-field-wrapper">
40
- <input id="search-field" role="combobox" aria-label="Search"
41
- aria-autocomplete="list" aria-controls="search-results"
42
- type="text" name="search" placeholder="Search" spellcheck="false"
43
- title="Type to search, Up and Down to navigate, Enter to load">
44
- </div>
45
-
46
- <ul id="search-results" aria-label="Search Results"
47
- aria-busy="false" aria-expanded="false"
48
- aria-atomic="false" class="initially-hidden"></ul>
49
- </form>
50
- </div>
51
-
52
- </div>
53
-
54
-
55
-
56
- <div id="class-metadata">
57
-
58
- <div id="parent-class-section" class="nav-section">
59
- <h3>Parent</h3>
60
-
61
-
62
- <p class="link"><a href="AbstractPrinter.html">RubyProf::AbstractPrinter</a>
63
-
64
- </div>
65
-
66
-
67
-
68
- <!-- Method Quickref -->
69
- <div id="method-list-section" class="nav-section">
70
- <h3>Methods</h3>
71
-
72
- <ul class="link-list" role="directory">
73
-
74
- <li ><a href="#method-c-needs_dir-3F">::needs_dir?</a>
75
-
76
- <li ><a href="#method-i-base_name">#base_name</a>
77
-
78
- <li ><a href="#method-i-convert">#convert</a>
79
-
80
- <li ><a href="#method-i-determine_event_specification_and_value_scale">#determine_event_specification_and_value_scale</a>
81
-
82
- <li ><a href="#method-i-file">#file</a>
83
-
84
- <li ><a href="#method-i-file_name_for_thread">#file_name_for_thread</a>
85
-
86
- <li ><a href="#method-i-file_path_for_thread">#file_path_for_thread</a>
87
-
88
- <li ><a href="#method-i-path">#path</a>
89
-
90
- <li ><a href="#method-i-print">#print</a>
91
-
92
- <li ><a href="#method-i-print_headers">#print_headers</a>
93
-
94
- <li ><a href="#method-i-print_method">#print_method</a>
95
-
96
- <li ><a href="#method-i-print_thread">#print_thread</a>
97
-
98
- <li ><a href="#method-i-print_threads">#print_threads</a>
99
-
100
- <li ><a href="#method-i-remove_subsidiary_files_from_previous_profile_runs">#remove_subsidiary_files_from_previous_profile_runs</a>
101
-
102
- <li ><a href="#method-i-validate_print_params">#validate_print_params</a>
103
-
104
- </ul>
105
- </div>
106
-
107
- </div>
108
- </nav>
109
-
110
- <main role="main" aria-labelledby="class-RubyProf::CallTreePrinter">
111
- <h1 id="class-RubyProf::CallTreePrinter" class="class">
112
- class RubyProf::CallTreePrinter
113
- </h1>
114
-
115
- <section class="description">
116
-
117
- <p>Generate profiling information in callgrind format for use by kcachegrind
118
- and similar tools.</p>
119
-
120
- <p>Note: when profiling for a callgrind printer, one should use the
121
- merge_fibers: true option when creating the profile. Otherwise each fiber
122
- would appear as a separate profile.</p>
123
-
124
- </section>
125
-
126
-
127
-
128
-
129
- <section id="5Buntitled-5D" class="documentation-section">
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
- <section id="public-class-5Buntitled-5D-method-details" class="method-section">
140
- <header>
141
- <h3>Public Class Methods</h3>
142
- </header>
143
-
144
-
145
- <div id="method-c-needs_dir-3F" class="method-detail ">
146
-
147
- <div class="method-heading">
148
- <span class="method-name">needs_dir?</span><span
149
- class="method-args">()</span>
150
-
151
- <span class="method-click-advice">click to toggle source</span>
152
-
153
- </div>
154
-
155
-
156
- <div class="method-description">
157
-
158
-
159
-
160
-
161
-
162
-
163
- <div class="method-source-code" id="needs_dir-3F-source">
164
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 90</span>
165
- <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">needs_dir?</span>
166
- <span class="ruby-keyword">true</span>
167
- <span class="ruby-keyword">end</span></pre>
168
- </div>
169
-
170
- </div>
171
-
172
-
173
-
174
-
175
- </div>
176
-
177
-
178
- </section>
179
-
180
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
181
- <header>
182
- <h3>Public Instance Methods</h3>
183
- </header>
184
-
185
-
186
- <div id="method-i-base_name" class="method-detail ">
187
-
188
- <div class="method-heading">
189
- <span class="method-name">base_name</span><span
190
- class="method-args">()</span>
191
-
192
- <span class="method-click-advice">click to toggle source</span>
193
-
194
- </div>
195
-
196
-
197
- <div class="method-description">
198
-
199
-
200
-
201
-
202
-
203
-
204
- <div class="method-source-code" id="base_name-source">
205
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 94</span>
206
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">base_name</span>
207
- <span class="ruby-ivar">@options</span>[<span class="ruby-value">:profile</span>] <span class="ruby-operator">||</span> <span class="ruby-string">&quot;profile&quot;</span>
208
- <span class="ruby-keyword">end</span></pre>
209
- </div>
210
-
211
- </div>
212
-
213
-
214
-
215
-
216
- </div>
217
-
218
-
219
- <div id="method-i-convert" class="method-detail ">
220
-
221
- <div class="method-heading">
222
- <span class="method-name">convert</span><span
223
- class="method-args">(value)</span>
224
-
225
- <span class="method-click-advice">click to toggle source</span>
226
-
227
- </div>
228
-
229
-
230
- <div class="method-description">
231
-
232
-
233
-
234
-
235
-
236
-
237
- <div class="method-source-code" id="convert-source">
238
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 69</span>
239
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">value</span>)
240
- (<span class="ruby-identifier">value</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@value_scale</span>).<span class="ruby-identifier">round</span>
241
- <span class="ruby-keyword">end</span></pre>
242
- </div>
243
-
244
- </div>
245
-
246
-
247
-
248
-
249
- </div>
250
-
251
-
252
- <div id="method-i-determine_event_specification_and_value_scale" class="method-detail ">
253
-
254
- <div class="method-heading">
255
- <span class="method-name">determine_event_specification_and_value_scale</span><span
256
- class="method-args">()</span>
257
-
258
- <span class="method-click-advice">click to toggle source</span>
259
-
260
- </div>
261
-
262
-
263
- <div class="method-description">
264
-
265
-
266
-
267
-
268
-
269
-
270
- <div class="method-source-code" id="determine_event_specification_and_value_scale-source">
271
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 16</span>
272
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">determine_event_specification_and_value_scale</span>
273
- <span class="ruby-ivar">@event_specification</span> = <span class="ruby-string">&quot;events: &quot;</span>
274
- <span class="ruby-keyword">case</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">measure_mode</span>
275
- <span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">PROCESS_TIME</span>
276
- <span class="ruby-ivar">@value_scale</span> = <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">CLOCKS_PER_SEC</span>
277
- <span class="ruby-ivar">@event_specification</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&#39;process_time&#39;</span>
278
- <span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">WALL_TIME</span>
279
- <span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1_000_000</span>
280
- <span class="ruby-ivar">@event_specification</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&#39;wall_time&#39;</span>
281
- <span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:CPU_TIME</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">CPU_TIME</span>
282
- <span class="ruby-ivar">@value_scale</span> = <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">cpu_frequency</span>
283
- <span class="ruby-ivar">@event_specification</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&#39;cpu_time&#39;</span>
284
- <span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:ALLOCATIONS</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">ALLOCATIONS</span>
285
- <span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1</span>
286
- <span class="ruby-ivar">@event_specification</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&#39;allocations&#39;</span>
287
- <span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:MEMORY</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">MEMORY</span>
288
- <span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1</span>
289
- <span class="ruby-ivar">@event_specification</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&#39;memory&#39;</span>
290
- <span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:GC_RUNS</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">GC_RUNS</span>
291
- <span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1</span>
292
- <span class="ruby-ivar">@event_specification</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&#39;gc_runs&#39;</span>
293
- <span class="ruby-keyword">when</span> <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">const_defined?</span>(<span class="ruby-value">:GC_TIME</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RubyProf</span><span class="ruby-operator">::</span><span class="ruby-constant">GC_TIME</span>
294
- <span class="ruby-ivar">@value_scale</span> = <span class="ruby-value">1000000</span>
295
- <span class="ruby-ivar">@event_specification</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&#39;gc_time&#39;</span>
296
- <span class="ruby-keyword">else</span>
297
- <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown measure mode: #{RubyProf.measure_mode}&quot;</span>
298
- <span class="ruby-keyword">end</span>
299
- <span class="ruby-keyword">end</span></pre>
300
- </div>
301
-
302
- </div>
303
-
304
-
305
-
306
-
307
- </div>
308
-
309
-
310
- <div id="method-i-file" class="method-detail ">
311
-
312
- <div class="method-heading">
313
- <span class="method-name">file</span><span
314
- class="method-args">(method)</span>
315
-
316
- <span class="method-click-advice">click to toggle source</span>
317
-
318
- </div>
319
-
320
-
321
- <div class="method-description">
322
-
323
-
324
-
325
-
326
-
327
-
328
- <div class="method-source-code" id="file-source">
329
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 73</span>
330
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">file</span>(<span class="ruby-identifier">method</span>)
331
- <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">method</span>.<span class="ruby-identifier">source_file</span>)
332
- <span class="ruby-keyword">end</span></pre>
333
- </div>
334
-
335
- </div>
336
-
337
-
338
-
339
-
340
- </div>
341
-
342
-
343
- <div id="method-i-file_name_for_thread" class="method-detail ">
344
-
345
- <div class="method-heading">
346
- <span class="method-name">file_name_for_thread</span><span
347
- class="method-args">(thread)</span>
348
-
349
- <span class="method-click-advice">click to toggle source</span>
350
-
351
- </div>
352
-
353
-
354
- <div class="method-description">
355
-
356
-
357
-
358
-
359
-
360
-
361
- <div class="method-source-code" id="file_name_for_thread-source">
362
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 104</span>
363
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">file_name_for_thread</span>(<span class="ruby-identifier">thread</span>)
364
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">thread</span>.<span class="ruby-identifier">fiber_id</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Fiber</span>.<span class="ruby-identifier">current</span>.<span class="ruby-identifier">object_id</span>
365
- [<span class="ruby-identifier">base_name</span>, <span class="ruby-string">&quot;callgrind.out&quot;</span>, <span class="ruby-identifier">$$</span>].<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;.&quot;</span>)
366
- <span class="ruby-keyword">else</span>
367
- [<span class="ruby-identifier">base_name</span>, <span class="ruby-string">&quot;callgrind.out&quot;</span>, <span class="ruby-identifier">$$</span>, <span class="ruby-identifier">thread</span>.<span class="ruby-identifier">fiber_id</span>].<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;.&quot;</span>)
368
- <span class="ruby-keyword">end</span>
369
- <span class="ruby-keyword">end</span></pre>
370
- </div>
371
-
372
- </div>
373
-
374
-
375
-
376
-
377
- </div>
378
-
379
-
380
- <div id="method-i-file_path_for_thread" class="method-detail ">
381
-
382
- <div class="method-heading">
383
- <span class="method-name">file_path_for_thread</span><span
384
- class="method-args">(thread)</span>
385
-
386
- <span class="method-click-advice">click to toggle source</span>
387
-
388
- </div>
389
-
390
-
391
- <div class="method-description">
392
-
393
-
394
-
395
-
396
-
397
-
398
- <div class="method-source-code" id="file_path_for_thread-source">
399
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 112</span>
400
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">file_path_for_thread</span>(<span class="ruby-identifier">thread</span>)
401
- <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">file_name_for_thread</span>(<span class="ruby-identifier">thread</span>))
402
- <span class="ruby-keyword">end</span></pre>
403
- </div>
404
-
405
- </div>
406
-
407
-
408
-
409
-
410
- </div>
411
-
412
-
413
- <div id="method-i-path" class="method-detail ">
414
-
415
- <div class="method-heading">
416
- <span class="method-name">path</span><span
417
- class="method-args">()</span>
418
-
419
- <span class="method-click-advice">click to toggle source</span>
420
-
421
- </div>
422
-
423
-
424
- <div class="method-description">
425
-
426
-
427
-
428
-
429
-
430
-
431
- <div class="method-source-code" id="path-source">
432
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 86</span>
433
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">path</span>
434
- <span class="ruby-ivar">@options</span>[<span class="ruby-value">:path</span>] <span class="ruby-operator">||</span> <span class="ruby-string">&quot;.&quot;</span>
435
- <span class="ruby-keyword">end</span></pre>
436
- </div>
437
-
438
- </div>
439
-
440
-
441
-
442
-
443
- </div>
444
-
445
-
446
- <div id="method-i-print" class="method-detail ">
447
-
448
- <div class="method-heading">
449
- <span class="method-name">print</span><span
450
- class="method-args">(options = {})</span>
451
-
452
- <span class="method-click-advice">click to toggle source</span>
453
-
454
- </div>
455
-
456
-
457
- <div class="method-description">
458
-
459
-
460
-
461
-
462
-
463
-
464
- <div class="method-source-code" id="print-source">
465
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 45</span>
466
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">print</span>(<span class="ruby-identifier">options</span> = {})
467
- <span class="ruby-identifier">validate_print_params</span>(<span class="ruby-identifier">options</span>)
468
- <span class="ruby-identifier">setup_options</span>(<span class="ruby-identifier">options</span>)
469
- <span class="ruby-identifier">determine_event_specification_and_value_scale</span>
470
- <span class="ruby-identifier">print_threads</span>
471
- <span class="ruby-keyword">end</span></pre>
472
- </div>
473
-
474
- </div>
475
-
476
-
477
-
478
-
479
- </div>
480
-
481
-
482
- <div id="method-i-print_headers" class="method-detail ">
483
-
484
- <div class="method-heading">
485
- <span class="method-name">print_headers</span><span
486
- class="method-args">(output, thread)</span>
487
-
488
- <span class="method-click-advice">click to toggle source</span>
489
-
490
- </div>
491
-
492
-
493
- <div class="method-description">
494
-
495
-
496
-
497
-
498
-
499
-
500
- <div class="method-source-code" id="print_headers-source">
501
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 116</span>
502
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_headers</span>(<span class="ruby-identifier">output</span>, <span class="ruby-identifier">thread</span>)
503
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{@event_specification}\n\n&quot;</span>
504
- <span class="ruby-comment"># this doesn&#39;t work. kcachegrind does not fully support the spec.</span>
505
- <span class="ruby-comment"># output &lt;&lt; &quot;thread: #{thread.id}\n\n&quot;</span>
506
- <span class="ruby-keyword">end</span></pre>
507
- </div>
508
-
509
- </div>
510
-
511
-
512
-
513
-
514
- </div>
515
-
516
-
517
- <div id="method-i-print_method" class="method-detail ">
518
-
519
- <div class="method-heading">
520
- <span class="method-name">print_method</span><span
521
- class="method-args">(output, method)</span>
522
-
523
- <span class="method-click-advice">click to toggle source</span>
524
-
525
- </div>
526
-
527
-
528
- <div class="method-description">
529
-
530
-
531
-
532
-
533
-
534
-
535
- <div class="method-source-code" id="print_method-source">
536
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 122</span>
537
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_method</span>(<span class="ruby-identifier">output</span>, <span class="ruby-identifier">method</span>)
538
- <span class="ruby-comment"># Print out the file and method name</span>
539
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;fl=#{file(method)}\n&quot;</span>
540
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;fn=#{method.calltree_name}\n&quot;</span>
541
-
542
- <span class="ruby-comment"># Now print out the function line number and its self time</span>
543
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{method.line} #{convert(method.self_time)}\n&quot;</span>
544
-
545
- <span class="ruby-comment"># Now print out all the children methods</span>
546
- <span class="ruby-identifier">method</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">callee</span><span class="ruby-operator">|</span>
547
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;cfl=#{file(callee.target)}\n&quot;</span>
548
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;cfn=#{callee.target.calltree_name}\n&quot;</span>
549
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;calls=#{callee.called} #{callee.line}\n&quot;</span>
550
-
551
- <span class="ruby-comment"># Print out total times here!</span>
552
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{callee.line} #{convert(callee.total_time)}\n&quot;</span>
553
- <span class="ruby-keyword">end</span>
554
- <span class="ruby-identifier">output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;\n&quot;</span>
555
- <span class="ruby-keyword">end</span></pre>
556
- </div>
557
-
558
- </div>
559
-
560
-
561
-
562
-
563
- </div>
564
-
565
-
566
- <div id="method-i-print_thread" class="method-detail ">
567
-
568
- <div class="method-heading">
569
- <span class="method-name">print_thread</span><span
570
- class="method-args">(thread)</span>
571
-
572
- <span class="method-click-advice">click to toggle source</span>
573
-
574
- </div>
575
-
576
-
577
- <div class="method-description">
578
-
579
-
580
-
581
-
582
-
583
-
584
- <div class="method-source-code" id="print_thread-source">
585
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 77</span>
586
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_thread</span>(<span class="ruby-identifier">thread</span>)
587
- <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">file_path_for_thread</span>(<span class="ruby-identifier">thread</span>), <span class="ruby-string">&quot;w&quot;</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
588
- <span class="ruby-identifier">print_headers</span>(<span class="ruby-identifier">f</span>, <span class="ruby-identifier">thread</span>)
589
- <span class="ruby-identifier">thread</span>.<span class="ruby-identifier">methods</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">method</span><span class="ruby-operator">|</span>
590
- <span class="ruby-identifier">print_method</span>(<span class="ruby-identifier">f</span>, <span class="ruby-identifier">method</span>)
591
- <span class="ruby-keyword">end</span>
592
- <span class="ruby-keyword">end</span>
593
- <span class="ruby-keyword">end</span></pre>
594
- </div>
595
-
596
- </div>
597
-
598
-
599
-
600
-
601
- </div>
602
-
603
-
604
- <div id="method-i-print_threads" class="method-detail ">
605
-
606
- <div class="method-heading">
607
- <span class="method-name">print_threads</span><span
608
- class="method-args">()</span>
609
-
610
- <span class="method-click-advice">click to toggle source</span>
611
-
612
- </div>
613
-
614
-
615
- <div class="method-description">
616
-
617
-
618
-
619
-
620
-
621
-
622
- <div class="method-source-code" id="print_threads-source">
623
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 60</span>
624
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">print_threads</span>
625
- <span class="ruby-identifier">remove_subsidiary_files_from_previous_profile_runs</span>
626
- <span class="ruby-comment"># TODO: merge fibers of a given thread here, instead of relying</span>
627
- <span class="ruby-comment"># on the profiler to merge fibers.</span>
628
- <span class="ruby-ivar">@result</span>.<span class="ruby-identifier">threads</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">thread</span><span class="ruby-operator">|</span>
629
- <span class="ruby-identifier">print_thread</span>(<span class="ruby-identifier">thread</span>)
630
- <span class="ruby-keyword">end</span>
631
- <span class="ruby-keyword">end</span></pre>
632
- </div>
633
-
634
- </div>
635
-
636
-
637
-
638
-
639
- </div>
640
-
641
-
642
- <div id="method-i-remove_subsidiary_files_from_previous_profile_runs" class="method-detail ">
643
-
644
- <div class="method-heading">
645
- <span class="method-name">remove_subsidiary_files_from_previous_profile_runs</span><span
646
- class="method-args">()</span>
647
-
648
- <span class="method-click-advice">click to toggle source</span>
649
-
650
- </div>
651
-
652
-
653
- <div class="method-description">
654
-
655
-
656
-
657
-
658
-
659
-
660
- <div class="method-source-code" id="remove_subsidiary_files_from_previous_profile_runs-source">
661
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 98</span>
662
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">remove_subsidiary_files_from_previous_profile_runs</span>
663
- <span class="ruby-identifier">pattern</span> = [<span class="ruby-identifier">base_name</span>, <span class="ruby-string">&quot;callgrind.out&quot;</span>, <span class="ruby-identifier">$$</span>, <span class="ruby-string">&quot;*&quot;</span>].<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;.&quot;</span>)
664
- <span class="ruby-identifier">files</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">pattern</span>))
665
- <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">rm_f</span>(<span class="ruby-identifier">files</span>)
666
- <span class="ruby-keyword">end</span></pre>
667
- </div>
668
-
669
- </div>
670
-
671
-
672
-
673
-
674
- </div>
675
-
676
-
677
- <div id="method-i-validate_print_params" class="method-detail ">
678
-
679
- <div class="method-heading">
680
- <span class="method-name">validate_print_params</span><span
681
- class="method-args">(options)</span>
682
-
683
- <span class="method-click-advice">click to toggle source</span>
684
-
685
- </div>
686
-
687
-
688
- <div class="method-description">
689
-
690
-
691
-
692
-
693
-
694
-
695
- <div class="method-source-code" id="validate_print_params-source">
696
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/call_tree_printer.rb, line 52</span>
697
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">validate_print_params</span>(<span class="ruby-identifier">options</span>)
698
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">IO</span>)
699
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;#{self.class.name}#print cannot print to IO objects&quot;</span>
700
- <span class="ruby-keyword">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
701
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;#{self.class.name}#print requires an options hash&quot;</span>
702
- <span class="ruby-keyword">end</span>
703
- <span class="ruby-keyword">end</span></pre>
704
- </div>
705
-
706
- </div>
707
-
708
-
709
-
710
-
711
- </div>
712
-
713
-
714
- </section>
715
-
716
- </section>
717
- </main>
718
-
719
-
720
- <footer id="validator-badges" role="contentinfo">
721
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
722
- <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
723
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
724
- </footer>
725
-