ruby-prof 0.15.7 → 0.15.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +5 -0
  3. data/doc/created.rid +4 -4
  4. data/doc/js/search_index.js.gz +0 -0
  5. data/examples/graph.dot +53 -75
  6. data/examples/multi.flat.txt +21 -21
  7. data/examples/multi.graph.html +693 -839
  8. data/examples/multi.grind.dat +93 -173
  9. data/examples/multi.stack.html +411 -437
  10. data/examples/stack.html +411 -437
  11. data/lib/ruby-prof/assets/call_stack_printer.css.html +117 -0
  12. data/lib/ruby-prof/assets/call_stack_printer.js.html +385 -0
  13. data/lib/ruby-prof/assets/call_stack_printer.png +0 -0
  14. data/lib/ruby-prof/printers/flat_printer.rb +1 -1
  15. data/lib/ruby-prof/printers/graph_html_printer.rb +43 -48
  16. data/lib/ruby-prof/version.rb +1 -1
  17. data/ruby-prof.gemspec +1 -1
  18. data/test/measure_memory_test.rb +5 -3
  19. data/test/printers_test.rb +1 -1
  20. metadata +5 -58
  21. data/doc/LICENSE.html +0 -114
  22. data/doc/README_rdoc.html +0 -592
  23. data/doc/Rack.html +0 -95
  24. data/doc/Rack/RubyProf.html +0 -264
  25. data/doc/RubyProf.html +0 -961
  26. data/doc/RubyProf/AbstractPrinter.html +0 -546
  27. data/doc/RubyProf/AggregateCallInfo.html +0 -537
  28. data/doc/RubyProf/CallInfo.html +0 -716
  29. data/doc/RubyProf/CallInfoPrinter.html +0 -120
  30. data/doc/RubyProf/CallInfoVisitor.html +0 -198
  31. data/doc/RubyProf/CallStackPrinter.html +0 -1121
  32. data/doc/RubyProf/CallTreePrinter.html +0 -359
  33. data/doc/RubyProf/Cmd.html +0 -631
  34. data/doc/RubyProf/DotPrinter.html +0 -257
  35. data/doc/RubyProf/FlatPrinter.html +0 -163
  36. data/doc/RubyProf/FlatPrinterWithLineNumbers.html +0 -208
  37. data/doc/RubyProf/GraphHtmlPrinter.html +0 -579
  38. data/doc/RubyProf/GraphPrinter.html +0 -139
  39. data/doc/RubyProf/MethodInfo.html +0 -885
  40. data/doc/RubyProf/MultiPrinter.html +0 -358
  41. data/doc/RubyProf/Profile.html +0 -713
  42. data/doc/RubyProf/ProfileTask.html +0 -490
  43. data/doc/RubyProf/Thread.html +0 -303
  44. data/doc/examples/flat_txt.html +0 -149
  45. data/doc/examples/graph_html.html +0 -850
  46. data/doc/examples/graph_txt.html +0 -274
  47. data/doc/images/add.png +0 -0
  48. data/doc/images/arrow_up.png +0 -0
  49. data/doc/images/brick.png +0 -0
  50. data/doc/images/brick_link.png +0 -0
  51. data/doc/images/bug.png +0 -0
  52. data/doc/images/bullet_black.png +0 -0
  53. data/doc/images/bullet_toggle_minus.png +0 -0
  54. data/doc/images/bullet_toggle_plus.png +0 -0
  55. data/doc/images/date.png +0 -0
  56. data/doc/images/delete.png +0 -0
  57. data/doc/images/find.png +0 -0
  58. data/doc/images/macFFBgHack.png +0 -0
  59. data/doc/images/package.png +0 -0
  60. data/doc/images/page_green.png +0 -0
  61. data/doc/images/page_white_text.png +0 -0
  62. data/doc/images/page_white_width.png +0 -0
  63. data/doc/images/plugin.png +0 -0
  64. data/doc/images/ruby.png +0 -0
  65. data/doc/images/tag_blue.png +0 -0
  66. data/doc/images/tag_green.png +0 -0
  67. data/doc/images/transparent.png +0 -0
  68. data/doc/images/wrench.png +0 -0
  69. data/doc/images/wrench_orange.png +0 -0
  70. data/doc/images/zoom.png +0 -0
  71. data/doc/index.html +0 -618
  72. data/doc/table_of_contents.html +0 -934
  73. data/examples/empty.png +0 -0
  74. data/examples/graph.png +0 -0
  75. data/examples/minus.png +0 -0
  76. data/examples/plus.png +0 -0
@@ -1,716 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>class RubyProf::CallInfo - ruby-prof</title>
8
-
9
- <script type="text/javascript">
10
- var rdoc_rel_prefix = "../";
11
- </script>
12
-
13
- <script src="../js/jquery.js"></script>
14
- <script src="../js/darkfish.js"></script>
15
-
16
- <link href="../css/fonts.css" rel="stylesheet">
17
- <link href="../css/rdoc.css" rel="stylesheet">
18
-
19
-
20
-
21
- <body id="top" role="document" class="class">
22
- <nav role="navigation">
23
- <div id="project-navigation">
24
- <div id="home-section" role="region" title="Quick navigation" class="nav-section">
25
- <h2>
26
- <a href="../index.html" rel="home">Home</a>
27
- </h2>
28
-
29
- <div id="table-of-contents-navigation">
30
- <a href="../table_of_contents.html#pages">Pages</a>
31
- <a href="../table_of_contents.html#classes">Classes</a>
32
- <a href="../table_of_contents.html#methods">Methods</a>
33
- </div>
34
- </div>
35
-
36
- <div id="search-section" role="search" class="project-section initially-hidden">
37
- <form action="#" method="get" accept-charset="utf-8">
38
- <div id="search-field-wrapper">
39
- <input id="search-field" role="combobox" aria-label="Search"
40
- aria-autocomplete="list" aria-controls="search-results"
41
- type="text" name="search" placeholder="Search" spellcheck="false"
42
- title="Type to search, Up and Down to navigate, Enter to load">
43
- </div>
44
-
45
- <ul id="search-results" aria-label="Search Results"
46
- aria-busy="false" aria-expanded="false"
47
- aria-atomic="false" class="initially-hidden"></ul>
48
- </form>
49
- </div>
50
-
51
- </div>
52
-
53
-
54
-
55
- <div id="class-metadata">
56
-
57
- <div id="parent-class-section" class="nav-section">
58
- <h3>Parent</h3>
59
-
60
-
61
- <p class="link">Object
62
-
63
- </div>
64
-
65
-
66
-
67
- <!-- Method Quickref -->
68
- <div id="method-list-section" class="nav-section">
69
- <h3>Methods</h3>
70
-
71
- <ul class="link-list" role="directory">
72
-
73
- <li ><a href="#method-c-roots_of">::roots_of</a>
74
-
75
- <li ><a href="#method-i-call_sequence">#call_sequence</a>
76
-
77
- <li ><a href="#method-i-children_time">#children_time</a>
78
-
79
- <li ><a href="#method-i-descendent_of">#descendent_of</a>
80
-
81
- <li ><a href="#method-i-detect_recursion">#detect_recursion</a>
82
-
83
- <li ><a href="#method-i-eliminate-21">#eliminate!</a>
84
-
85
- <li ><a href="#method-i-find_call">#find_call</a>
86
-
87
- <li class="calls-super" ><a href="#method-i-inspect">#inspect</a>
88
-
89
- <li ><a href="#method-i-merge_call_tree">#merge_call_tree</a>
90
-
91
- <li ><a href="#method-i-non_recursive-3F">#non_recursive?</a>
92
-
93
- <li ><a href="#method-i-recalc_recursion">#recalc_recursion</a>
94
-
95
- <li ><a href="#method-i-root-3F">#root?</a>
96
-
97
- <li ><a href="#method-i-stack">#stack</a>
98
-
99
- <li ><a href="#method-i-to_s">#to_s</a>
100
-
101
- </ul>
102
- </div>
103
-
104
- </div>
105
- </nav>
106
-
107
- <main role="main" aria-labelledby="class-RubyProf::CallInfo">
108
- <h1 id="class-RubyProf::CallInfo" class="class">
109
- class RubyProf::CallInfo
110
- </h1>
111
-
112
- <section class="description">
113
-
114
- </section>
115
-
116
-
117
-
118
-
119
- <section id="5Buntitled-5D" class="documentation-section">
120
-
121
-
122
-
123
-
124
-
125
-
126
-
127
- <section class="attribute-method-details" class="method-section">
128
- <header>
129
- <h3>Attributes</h3>
130
- </header>
131
-
132
-
133
- <div id="attribute-i-recursive" class="method-detail">
134
- <div class="method-heading attribute-method-heading">
135
- <span class="method-name">recursive</span><span
136
- class="attribute-access-type">[R]</span>
137
- </div>
138
-
139
- <div class="method-description">
140
-
141
- <p>part of this class is defined in C code. it provides the following
142
- attributes pertaining to tree structure: depth: tree level (0 == root)
143
- parent: parent call info (can be nil) children: array of call info
144
- children (can be empty) target: method info (containing an array of
145
- call infos)</p>
146
-
147
- </div>
148
- </div>
149
-
150
- </section>
151
-
152
-
153
-
154
- <section id="public-class-5Buntitled-5D-method-details" class="method-section">
155
- <header>
156
- <h3>Public Class Methods</h3>
157
- </header>
158
-
159
-
160
- <div id="method-c-roots_of" class="method-detail ">
161
-
162
- <div class="method-heading">
163
- <span class="method-name">roots_of</span><span
164
- class="method-args">(call_infos)</span>
165
-
166
- <span class="method-click-advice">click to toggle source</span>
167
-
168
- </div>
169
-
170
-
171
- <div class="method-description">
172
-
173
-
174
-
175
-
176
-
177
-
178
- <div class="method-source-code" id="roots_of-source">
179
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 74</span>
180
- <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">roots_of</span>(<span class="ruby-identifier">call_infos</span>)
181
- <span class="ruby-identifier">roots</span> = []
182
- <span class="ruby-identifier">sorted</span> = <span class="ruby-identifier">call_infos</span>.<span class="ruby-identifier">sort_by</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:depth</span>).<span class="ruby-identifier">reverse</span>
183
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">call_info</span> = <span class="ruby-identifier">sorted</span>.<span class="ruby-identifier">shift</span>
184
- <span class="ruby-identifier">roots</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">call_info</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">sorted</span>.<span class="ruby-identifier">any?</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">descendent_of</span>(<span class="ruby-identifier">p</span>)}
185
- <span class="ruby-keyword">end</span>
186
- <span class="ruby-identifier">roots</span>
187
- <span class="ruby-keyword">end</span></pre>
188
- </div>
189
-
190
- </div>
191
-
192
-
193
-
194
-
195
- </div>
196
-
197
-
198
- </section>
199
-
200
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
201
- <header>
202
- <h3>Public Instance Methods</h3>
203
- </header>
204
-
205
-
206
- <div id="method-i-call_sequence" class="method-detail ">
207
-
208
- <div class="method-heading">
209
- <span class="method-name">call_sequence</span><span
210
- class="method-args">()</span>
211
-
212
- <span class="method-click-advice">click to toggle source</span>
213
-
214
- </div>
215
-
216
-
217
- <div class="method-description">
218
-
219
-
220
-
221
-
222
-
223
-
224
- <div class="method-source-code" id="call_sequence-source">
225
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 56</span>
226
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">call_sequence</span>
227
- <span class="ruby-ivar">@call_sequence</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
228
- <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">method</span><span class="ruby-operator">|</span> <span class="ruby-identifier">method</span>.<span class="ruby-identifier">full_name</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;-&gt;&#39;</span>)
229
- <span class="ruby-keyword">end</span>
230
- <span class="ruby-keyword">end</span></pre>
231
- </div>
232
-
233
- </div>
234
-
235
-
236
-
237
-
238
- </div>
239
-
240
-
241
- <div id="method-i-children_time" class="method-detail ">
242
-
243
- <div class="method-heading">
244
- <span class="method-name">children_time</span><span
245
- class="method-args">()</span>
246
-
247
- <span class="method-click-advice">click to toggle source</span>
248
-
249
- </div>
250
-
251
-
252
- <div class="method-description">
253
-
254
-
255
-
256
-
257
-
258
-
259
- <div class="method-source-code" id="children_time-source">
260
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 37</span>
261
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">children_time</span>
262
- <span class="ruby-identifier">children</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sum</span>, <span class="ruby-identifier">call_info</span><span class="ruby-operator">|</span>
263
- <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">total_time</span>
264
- <span class="ruby-keyword">end</span>
265
- <span class="ruby-keyword">end</span></pre>
266
- </div>
267
-
268
- </div>
269
-
270
-
271
-
272
-
273
- </div>
274
-
275
-
276
- <div id="method-i-descendent_of" class="method-detail ">
277
-
278
- <div class="method-heading">
279
- <span class="method-name">descendent_of</span><span
280
- class="method-args">(other)</span>
281
-
282
- <span class="method-click-advice">click to toggle source</span>
283
-
284
- </div>
285
-
286
-
287
- <div class="method-description">
288
-
289
-
290
-
291
-
292
-
293
-
294
- <div class="method-source-code" id="descendent_of-source">
295
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 66</span>
296
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">descendent_of</span>(<span class="ruby-identifier">other</span>)
297
- <span class="ruby-identifier">p</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parent</span>
298
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">p</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">p</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">other</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">depth</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">depth</span>
299
- <span class="ruby-identifier">p</span> = <span class="ruby-identifier">p</span>.<span class="ruby-identifier">parent</span>
300
- <span class="ruby-keyword">end</span>
301
- <span class="ruby-identifier">p</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>
302
- <span class="ruby-keyword">end</span></pre>
303
- </div>
304
-
305
- </div>
306
-
307
-
308
-
309
-
310
- </div>
311
-
312
-
313
- <div id="method-i-detect_recursion" class="method-detail ">
314
-
315
- <div class="method-heading">
316
- <span class="method-name">detect_recursion</span><span
317
- class="method-args">(visited_methods = Hash.new(0))</span>
318
-
319
- <span class="method-click-advice">click to toggle source</span>
320
-
321
- </div>
322
-
323
-
324
- <div class="method-description">
325
-
326
-
327
-
328
-
329
-
330
-
331
- <div class="method-source-code" id="detect_recursion-source">
332
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 17</span>
333
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">detect_recursion</span>(<span class="ruby-identifier">visited_methods</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>))
334
- <span class="ruby-ivar">@recursive</span> = (<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">target</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
335
- <span class="ruby-ivar">@non_recursive</span> = <span class="ruby-keyword">true</span>
336
- <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">child</span><span class="ruby-operator">|</span>
337
- <span class="ruby-ivar">@non_recursive</span> = <span class="ruby-keyword">false</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">detect_recursion</span>(<span class="ruby-identifier">visited_methods</span>)
338
- <span class="ruby-keyword">end</span>
339
- <span class="ruby-identifier">visited_methods</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">target</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">target</span>] <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
340
- <span class="ruby-keyword">return</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@non_recursive</span>
341
- <span class="ruby-keyword">end</span></pre>
342
- </div>
343
-
344
- </div>
345
-
346
-
347
-
348
-
349
- </div>
350
-
351
-
352
- <div id="method-i-eliminate-21" class="method-detail ">
353
-
354
- <div class="method-heading">
355
- <span class="method-name">eliminate!</span><span
356
- class="method-args">()</span>
357
-
358
- <span class="method-click-advice">click to toggle source</span>
359
-
360
- </div>
361
-
362
-
363
- <div class="method-description">
364
-
365
- <p>eliminate call info from the call tree. adds self and wait time to parent
366
- and attaches called methods to parent. merges call trees for methods called
367
- from both praent end self.</p>
368
-
369
-
370
-
371
-
372
- <div class="method-source-code" id="eliminate-21-source">
373
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 94</span>
374
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">eliminate!</span>
375
- <span class="ruby-comment"># puts &quot;eliminating #{self}&quot;</span>
376
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">parent</span>
377
- <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">add_self_time</span>(<span class="ruby-keyword">self</span>)
378
- <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">add_wait_time</span>(<span class="ruby-keyword">self</span>)
379
- <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">kid</span><span class="ruby-operator">|</span>
380
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">call</span> = <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">find_call</span>(<span class="ruby-identifier">kid</span>)
381
- <span class="ruby-identifier">call</span>.<span class="ruby-identifier">merge_call_tree</span>(<span class="ruby-identifier">kid</span>)
382
- <span class="ruby-keyword">else</span>
383
- <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">children</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">kid</span>
384
- <span class="ruby-comment"># $stderr.puts &quot;setting parent of #{kid}\nto #{parent}&quot;</span>
385
- <span class="ruby-identifier">kid</span>.<span class="ruby-identifier">parent</span> = <span class="ruby-identifier">parent</span>
386
- <span class="ruby-keyword">end</span>
387
- <span class="ruby-keyword">end</span>
388
- <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-keyword">self</span>)
389
- <span class="ruby-keyword">end</span></pre>
390
- </div>
391
-
392
- </div>
393
-
394
-
395
-
396
-
397
- </div>
398
-
399
-
400
- <div id="method-i-find_call" class="method-detail ">
401
-
402
- <div class="method-heading">
403
- <span class="method-name">find_call</span><span
404
- class="method-args">(other)</span>
405
-
406
- <span class="method-click-advice">click to toggle source</span>
407
-
408
- </div>
409
-
410
-
411
- <div class="method-description">
412
-
413
- <p>find a specific call in list of children. returns nil if not found. note:
414
- there can&#39;t be more than one child with a given target method. in other
415
- words: x.children.grep{|y|y.target==m}.size &lt;= 1 for all method infos m
416
- and call infos x</p>
417
-
418
-
419
-
420
-
421
- <div class="method-source-code" id="find_call-source">
422
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 114</span>
423
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">find_call</span>(<span class="ruby-identifier">other</span>)
424
- <span class="ruby-identifier">matching</span> = <span class="ruby-identifier">children</span>.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">kid</span><span class="ruby-operator">|</span> <span class="ruby-identifier">kid</span>.<span class="ruby-identifier">target</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">target</span> }
425
- <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;inconsistent call tree&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">matching</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">1</span>
426
- <span class="ruby-identifier">matching</span>.<span class="ruby-identifier">first</span>
427
- <span class="ruby-keyword">end</span></pre>
428
- </div>
429
-
430
- </div>
431
-
432
-
433
-
434
-
435
- </div>
436
-
437
-
438
- <div id="method-i-inspect" class="method-detail ">
439
-
440
- <div class="method-heading">
441
- <span class="method-name">inspect</span><span
442
- class="method-args">()</span>
443
-
444
- <span class="method-click-advice">click to toggle source</span>
445
-
446
- </div>
447
-
448
-
449
- <div class="method-description">
450
-
451
-
452
-
453
-
454
- <div class="method-calls-super">
455
- Calls superclass method
456
-
457
- </div>
458
-
459
-
460
-
461
- <div class="method-source-code" id="inspect-source">
462
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 87</span>
463
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">inspect</span>
464
- <span class="ruby-keyword">super</span> <span class="ruby-operator">+</span> <span class="ruby-node">&quot;(#{target.full_name}, d: #{depth}, c: #{called}, tt: #{total_time}, st: #{self_time}, ct: #{children_time})&quot;</span>
465
- <span class="ruby-keyword">end</span></pre>
466
- </div>
467
-
468
- </div>
469
-
470
-
471
-
472
-
473
- </div>
474
-
475
-
476
- <div id="method-i-merge_call_tree" class="method-detail ">
477
-
478
- <div class="method-heading">
479
- <span class="method-name">merge_call_tree</span><span
480
- class="method-args">(other)</span>
481
-
482
- <span class="method-click-advice">click to toggle source</span>
483
-
484
- </div>
485
-
486
-
487
- <div class="method-description">
488
-
489
- <p>merge two call trees. adds self, wait, and total time of other to self and
490
- merges children of other into children of self.</p>
491
-
492
-
493
-
494
-
495
- <div class="method-source-code" id="merge_call_tree-source">
496
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 121</span>
497
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">merge_call_tree</span>(<span class="ruby-identifier">other</span>)
498
- <span class="ruby-comment"># $stderr.puts &quot;merging #{self}\nand #{other}&quot;</span>
499
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">called</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">called</span>
500
- <span class="ruby-identifier">add_self_time</span>(<span class="ruby-identifier">other</span>)
501
- <span class="ruby-identifier">add_wait_time</span>(<span class="ruby-identifier">other</span>)
502
- <span class="ruby-identifier">add_total_time</span>(<span class="ruby-identifier">other</span>)
503
- <span class="ruby-identifier">other</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">other_kid</span><span class="ruby-operator">|</span>
504
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">kid</span> = <span class="ruby-identifier">find_call</span>(<span class="ruby-identifier">other_kid</span>)
505
- <span class="ruby-comment"># $stderr.puts &quot;merging kids&quot;</span>
506
- <span class="ruby-identifier">kid</span>.<span class="ruby-identifier">merge_call_tree</span>(<span class="ruby-identifier">other_kid</span>)
507
- <span class="ruby-keyword">else</span>
508
- <span class="ruby-identifier">other_kid</span>.<span class="ruby-identifier">parent</span> = <span class="ruby-keyword">self</span>
509
- <span class="ruby-identifier">children</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">other_kid</span>
510
- <span class="ruby-keyword">end</span>
511
- <span class="ruby-keyword">end</span>
512
- <span class="ruby-identifier">other</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">clear</span>
513
- <span class="ruby-identifier">other</span>.<span class="ruby-identifier">target</span>.<span class="ruby-identifier">call_infos</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">other</span>)
514
- <span class="ruby-keyword">end</span></pre>
515
- </div>
516
-
517
- </div>
518
-
519
-
520
-
521
-
522
- </div>
523
-
524
-
525
- <div id="method-i-non_recursive-3F" class="method-detail ">
526
-
527
- <div class="method-heading">
528
- <span class="method-name">non_recursive?</span><span
529
- class="method-args">()</span>
530
-
531
- <span class="method-click-advice">click to toggle source</span>
532
-
533
- </div>
534
-
535
-
536
- <div class="method-description">
537
-
538
-
539
-
540
-
541
-
542
-
543
- <div class="method-source-code" id="non_recursive-3F-source">
544
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 13</span>
545
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">non_recursive?</span>
546
- <span class="ruby-ivar">@non_recursive</span>
547
- <span class="ruby-keyword">end</span></pre>
548
- </div>
549
-
550
- </div>
551
-
552
-
553
-
554
-
555
- </div>
556
-
557
-
558
- <div id="method-i-recalc_recursion" class="method-detail ">
559
-
560
- <div class="method-heading">
561
- <span class="method-name">recalc_recursion</span><span
562
- class="method-args">(visited_methods = Hash.new(0))</span>
563
-
564
- <span class="method-click-advice">click to toggle source</span>
565
-
566
- </div>
567
-
568
-
569
- <div class="method-description">
570
-
571
-
572
-
573
-
574
-
575
-
576
- <div class="method-source-code" id="recalc_recursion-source">
577
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 27</span>
578
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">recalc_recursion</span>(<span class="ruby-identifier">visited_methods</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>))
579
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@non_recursive</span>
580
- <span class="ruby-identifier">target</span>.<span class="ruby-identifier">clear_cached_values_which_depend_on_recursiveness</span>
581
- <span class="ruby-ivar">@recursive</span> = (<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">target</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
582
- <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">child</span><span class="ruby-operator">|</span>
583
- <span class="ruby-identifier">child</span>.<span class="ruby-identifier">recalc_recursion</span>(<span class="ruby-identifier">visited_methods</span>)
584
- <span class="ruby-keyword">end</span>
585
- <span class="ruby-identifier">visited_methods</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">target</span>) <span class="ruby-keyword">if</span> (<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">target</span>] <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
586
- <span class="ruby-keyword">end</span></pre>
587
- </div>
588
-
589
- </div>
590
-
591
-
592
-
593
-
594
- </div>
595
-
596
-
597
- <div id="method-i-root-3F" class="method-detail ">
598
-
599
- <div class="method-heading">
600
- <span class="method-name">root?</span><span
601
- class="method-args">()</span>
602
-
603
- <span class="method-click-advice">click to toggle source</span>
604
-
605
- </div>
606
-
607
-
608
- <div class="method-description">
609
-
610
-
611
-
612
-
613
-
614
-
615
- <div class="method-source-code" id="root-3F-source">
616
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 62</span>
617
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">root?</span>
618
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span>
619
- <span class="ruby-keyword">end</span></pre>
620
- </div>
621
-
622
- </div>
623
-
624
-
625
-
626
-
627
- </div>
628
-
629
-
630
- <div id="method-i-stack" class="method-detail ">
631
-
632
- <div class="method-heading">
633
- <span class="method-name">stack</span><span
634
- class="method-args">()</span>
635
-
636
- <span class="method-click-advice">click to toggle source</span>
637
-
638
- </div>
639
-
640
-
641
- <div class="method-description">
642
-
643
-
644
-
645
-
646
-
647
-
648
- <div class="method-source-code" id="stack-source">
649
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 43</span>
650
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">stack</span>
651
- <span class="ruby-ivar">@stack</span> <span class="ruby-operator">||=</span> <span class="ruby-keyword">begin</span>
652
- <span class="ruby-identifier">methods</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
653
- <span class="ruby-identifier">call_info</span> = <span class="ruby-keyword">self</span>
654
-
655
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">call_info</span>
656
- <span class="ruby-identifier">methods</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">target</span>
657
- <span class="ruby-identifier">call_info</span> = <span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">parent</span>
658
- <span class="ruby-keyword">end</span>
659
- <span class="ruby-identifier">methods</span>.<span class="ruby-identifier">reverse</span>
660
- <span class="ruby-keyword">end</span>
661
- <span class="ruby-keyword">end</span></pre>
662
- </div>
663
-
664
- </div>
665
-
666
-
667
-
668
-
669
- </div>
670
-
671
-
672
- <div id="method-i-to_s" class="method-detail ">
673
-
674
- <div class="method-heading">
675
- <span class="method-name">to_s</span><span
676
- class="method-args">()</span>
677
-
678
- <span class="method-click-advice">click to toggle source</span>
679
-
680
- </div>
681
-
682
-
683
- <div class="method-description">
684
-
685
-
686
-
687
-
688
-
689
-
690
- <div class="method-source-code" id="to_s-source">
691
- <pre><span class="ruby-comment"># File lib/ruby-prof/call_info.rb, line 83</span>
692
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_s</span>
693
- <span class="ruby-node">&quot;#{target.full_name} (c: #{called}, tt: #{total_time}, st: #{self_time}, ct: #{children_time})&quot;</span>
694
- <span class="ruby-keyword">end</span></pre>
695
- </div>
696
-
697
- </div>
698
-
699
-
700
-
701
-
702
- </div>
703
-
704
-
705
- </section>
706
-
707
- </section>
708
- </main>
709
-
710
-
711
- <footer id="validator-badges" role="contentinfo">
712
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
713
- <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.0.
714
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
715
- </footer>
716
-