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
@@ -1,552 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>class RubyProf::GraphHtmlPrinter - 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"><a href="AbstractPrinter.html">RubyProf::AbstractPrinter</a>
62
-
63
- </div>
64
-
65
- <div id="includes-section" class="nav-section">
66
- <h3>Included Modules</h3>
67
-
68
- <ul class="link-list">
69
-
70
-
71
- <li><span class="include">ERB::Util</span>
72
-
73
-
74
- </ul>
75
- </div>
76
-
77
-
78
- <!-- Method Quickref -->
79
- <div id="method-list-section" class="nav-section">
80
- <h3>Methods</h3>
81
-
82
- <ul class="link-list" role="directory">
83
-
84
- <li ><a href="#method-i-create_link">#create_link</a>
85
-
86
- <li ><a href="#method-i-file_link">#file_link</a>
87
-
88
- <li ><a href="#method-i-method_href">#method_href</a>
89
-
90
- <li ><a href="#method-i-print">#print</a>
91
-
92
- <li class="calls-super" ><a href="#method-i-setup_options">#setup_options</a>
93
-
94
- <li ><a href="#method-i-template">#template</a>
95
-
96
- </ul>
97
- </div>
98
-
99
- </div>
100
- </nav>
101
-
102
- <main role="main" aria-labelledby="class-RubyProf::GraphHtmlPrinter">
103
- <h1 id="class-RubyProf::GraphHtmlPrinter" class="class">
104
- class RubyProf::GraphHtmlPrinter
105
- </h1>
106
-
107
- <section class="description">
108
-
109
- <p>Generates <a href="../files/examples/graph_html.html">graph</a> profile
110
- reports as html. To use the graph html printer:</p>
111
-
112
- <pre>result = RubyProf.profile do
113
- [code to profile]
114
- end
115
-
116
- printer = RubyProf::GraphHtmlPrinter.new(result)
117
- printer.print(STDOUT, :min_percent=&gt;0)</pre>
118
-
119
- <p>The Graph printer takes the following options in its print methods:</p>
120
-
121
- <pre>:filename - specify a file to use that contains the ERB
122
- template to use, instead of the built-in self.template
123
-
124
- :template - specify an ERB template to use, instead of the
125
- built-in self.template</pre>
126
-
127
- </section>
128
-
129
-
130
-
131
-
132
- <section id="5Buntitled-5D" class="documentation-section">
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
143
- <header>
144
- <h3>Public Instance Methods</h3>
145
- </header>
146
-
147
-
148
- <div id="method-i-create_link" class="method-detail ">
149
-
150
- <div class="method-heading">
151
- <span class="method-name">create_link</span><span
152
- class="method-args">(thread, overall_time, method)</span>
153
-
154
- <span class="method-click-advice">click to toggle source</span>
155
-
156
- </div>
157
-
158
-
159
- <div class="method-description">
160
-
161
- <p>Creates a link to a method. Note that we do not create links to methods
162
- which are under the min_perecent specified by the user, since they will not
163
- be printed out.</p>
164
-
165
-
166
-
167
-
168
- <div class="method-source-code" id="create_link-source">
169
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/graph_html_printer.rb, line 45</span>
170
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">create_link</span>(<span class="ruby-identifier">thread</span>, <span class="ruby-identifier">overall_time</span>, <span class="ruby-identifier">method</span>)
171
- <span class="ruby-identifier">total_percent</span> = (<span class="ruby-identifier">method</span>.<span class="ruby-identifier">total_time</span><span class="ruby-operator">/</span><span class="ruby-identifier">overall_time</span>) <span class="ruby-operator">*</span> <span class="ruby-value">100</span>
172
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">total_percent</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">min_percent</span>
173
- <span class="ruby-comment"># Just return name</span>
174
- <span class="ruby-identifier">h</span> <span class="ruby-identifier">method</span>.<span class="ruby-identifier">full_name</span>
175
- <span class="ruby-keyword">else</span>
176
- <span class="ruby-identifier">href</span> = <span class="ruby-string">&#39;#&#39;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">method_href</span>(<span class="ruby-identifier">thread</span>, <span class="ruby-identifier">method</span>)
177
- <span class="ruby-node">&quot;&lt;a href=\&quot;#{href}\&quot;&gt;#{h method.full_name}&lt;/a&gt;&quot;</span>
178
- <span class="ruby-keyword">end</span>
179
- <span class="ruby-keyword">end</span></pre>
180
- </div>
181
-
182
- </div>
183
-
184
-
185
-
186
-
187
- </div>
188
-
189
-
190
- <div id="method-i-file_link" class="method-detail ">
191
-
192
- <div class="method-heading">
193
- <span class="method-name">file_link</span><span
194
- class="method-args">(path, linenum)</span>
195
-
196
- <span class="method-click-advice">click to toggle source</span>
197
-
198
- </div>
199
-
200
-
201
- <div class="method-description">
202
-
203
-
204
-
205
-
206
-
207
-
208
- <div class="method-source-code" id="file_link-source">
209
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/graph_html_printer.rb, line 60</span>
210
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">file_link</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">linenum</span>)
211
- <span class="ruby-identifier">srcfile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">path</span>)
212
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">srcfile</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/\/ruby_runtime$/</span>
213
- <span class="ruby-string">&quot;&quot;</span>
214
- <span class="ruby-keyword">else</span>
215
- <span class="ruby-keyword">if</span> <span class="ruby-constant">RUBY_PLATFORM</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/darwin/</span>
216
- <span class="ruby-node">&quot;&lt;a href=\&quot;txmt://open?url=file://#{h srcfile}&amp;line=#{linenum}\&quot; title=\&quot;#{h srcfile}:#{linenum}\&quot;&gt;#{linenum}&lt;/a&gt;&quot;</span>
217
- <span class="ruby-keyword">else</span>
218
- <span class="ruby-node">&quot;&lt;a href=\&quot;file://#{h srcfile}##{linenum}\&quot; title=\&quot;#{h srcfile}:#{linenum}\&quot;&gt;#{linenum}&lt;/a&gt;&quot;</span>
219
- <span class="ruby-keyword">end</span>
220
- <span class="ruby-keyword">end</span>
221
- <span class="ruby-keyword">end</span></pre>
222
- </div>
223
-
224
- </div>
225
-
226
-
227
-
228
-
229
- </div>
230
-
231
-
232
- <div id="method-i-method_href" class="method-detail ">
233
-
234
- <div class="method-heading">
235
- <span class="method-name">method_href</span><span
236
- class="method-args">(thread, method)</span>
237
-
238
- <span class="method-click-advice">click to toggle source</span>
239
-
240
- </div>
241
-
242
-
243
- <div class="method-description">
244
-
245
-
246
-
247
-
248
-
249
-
250
- <div class="method-source-code" id="method_href-source">
251
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/graph_html_printer.rb, line 56</span>
252
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">method_href</span>(<span class="ruby-identifier">thread</span>, <span class="ruby-identifier">method</span>)
253
- <span class="ruby-identifier">h</span>(<span class="ruby-identifier">method</span>.<span class="ruby-identifier">full_name</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-node">/[&gt;&lt;#\.\?=:]/</span>,<span class="ruby-string">&quot;_&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-string">&quot;_&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">thread</span>.<span class="ruby-identifier">fiber_id</span>.<span class="ruby-identifier">to_s</span>)
254
- <span class="ruby-keyword">end</span></pre>
255
- </div>
256
-
257
- </div>
258
-
259
-
260
-
261
-
262
- </div>
263
-
264
-
265
- <div id="method-i-print" class="method-detail ">
266
-
267
- <div class="method-heading">
268
- <span class="method-name">print</span><span
269
- class="method-args">(output = STDOUT, options = {})</span>
270
-
271
- <span class="method-click-advice">click to toggle source</span>
272
-
273
- </div>
274
-
275
-
276
- <div class="method-description">
277
-
278
-
279
-
280
-
281
-
282
-
283
- <div class="method-source-code" id="print-source">
284
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/graph_html_printer.rb, line 35</span>
285
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">print</span>(<span class="ruby-identifier">output</span> = <span class="ruby-constant">STDOUT</span>, <span class="ruby-identifier">options</span> = {})
286
- <span class="ruby-ivar">@output</span> = <span class="ruby-identifier">output</span>
287
- <span class="ruby-identifier">setup_options</span>(<span class="ruby-identifier">options</span>)
288
- <span class="ruby-ivar">@output</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@erb</span>.<span class="ruby-identifier">result</span>(<span class="ruby-identifier">binding</span>).<span class="ruby-identifier">split</span>(<span class="ruby-string">&quot;\n&quot;</span>).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:rstrip</span>).<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;\n&quot;</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;\n&quot;</span>
289
- <span class="ruby-keyword">end</span></pre>
290
- </div>
291
-
292
- </div>
293
-
294
-
295
-
296
-
297
- </div>
298
-
299
-
300
- <div id="method-i-setup_options" class="method-detail ">
301
-
302
- <div class="method-heading">
303
- <span class="method-name">setup_options</span><span
304
- class="method-args">(options)</span>
305
-
306
- <span class="method-click-advice">click to toggle source</span>
307
-
308
- </div>
309
-
310
-
311
- <div class="method-description">
312
-
313
-
314
-
315
-
316
- <div class="method-calls-super">
317
- Calls superclass method
318
- <a href="AbstractPrinter.html#method-i-setup_options">RubyProf::AbstractPrinter#setup_options</a>
319
- </div>
320
-
321
-
322
-
323
- <div class="method-source-code" id="setup_options-source">
324
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/graph_html_printer.rb, line 26</span>
325
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">setup_options</span>(<span class="ruby-identifier">options</span>)
326
- <span class="ruby-keyword">super</span>(<span class="ruby-identifier">options</span>)
327
-
328
- <span class="ruby-identifier">filename</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:filename</span>]
329
- <span class="ruby-identifier">template</span> = <span class="ruby-identifier">filename</span> <span class="ruby-operator">?</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">filename</span>).<span class="ruby-identifier">untaint</span> <span class="ruby-operator">:</span> (<span class="ruby-identifier">options</span>[<span class="ruby-value">:template</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">template</span>)
330
- <span class="ruby-ivar">@erb</span> = <span class="ruby-constant">ERB</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">template</span>)
331
- <span class="ruby-ivar">@erb</span>.<span class="ruby-identifier">filename</span> = <span class="ruby-identifier">filename</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-template" class="method-detail ">
344
-
345
- <div class="method-heading">
346
- <span class="method-name">template</span><span
347
- class="method-args">()</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="template-source">
362
- <pre><span class="ruby-comment"># File lib/ruby-prof/printers/graph_html_printer.rb, line 73</span>
363
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">template</span>
364
- <span class="ruby-string">&#39;
365
- &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;
366
- &lt;html&gt;
367
- &lt;head&gt;
368
- &lt;style media=&quot;all&quot; type=&quot;text/css&quot;&gt;
369
- table {
370
- border-collapse: collapse;
371
- border: 1px solid #CCC;
372
- font-family: Verdana, Arial, Helvetica, sans-serif;
373
- font-size: 9pt;
374
- line-height: normal;
375
- width: 100%;
376
- }
377
-
378
- th {
379
- text-align: center;
380
- border-top: 1px solid #FB7A31;
381
- border-bottom: 1px solid #FB7A31;
382
- background: #FFC;
383
- padding: 0.3em;
384
- border-left: 1px solid silver;
385
- }
386
-
387
- tr.break td {
388
- border: 0;
389
- border-top: 1px solid #FB7A31;
390
- padding: 0;
391
- margin: 0;
392
- }
393
-
394
- tr.method td {
395
- font-weight: bold;
396
- }
397
-
398
- td {
399
- padding: 0.3em;
400
- }
401
-
402
- td:first-child {
403
- width: 190px;
404
- }
405
-
406
- td {
407
- border-left: 1px solid #CCC;
408
- text-align: center;
409
- }
410
-
411
- .method_name {
412
- text-align: left;
413
- }
414
-
415
- tfoot td {
416
- text-align: left;
417
- }
418
- &lt;/style&gt;
419
- &lt;/head&gt;
420
- &lt;body&gt;
421
- &lt;h1&gt;Profile Report: &lt;%= RubyProf.measure_mode_string %&gt;&lt;/h1&gt;
422
- &lt;!-- Threads Table --&gt;
423
- &lt;table&gt;
424
- &lt;tr&gt;
425
- &lt;th&gt;Thread ID&lt;/th&gt;
426
- &lt;th&gt;Fiber ID&lt;/th&gt;
427
- &lt;th&gt;Total Time&lt;/th&gt;
428
- &lt;/tr&gt;
429
- &lt;% for thread in @result.threads %&gt;
430
- &lt;tr&gt;
431
- &lt;td&gt;&lt;%= thread.id %&gt;&lt;/td&gt;
432
- &lt;td&gt;&lt;a href=&quot;#&lt;%= thread.fiber_id %&gt;&quot;&gt;&lt;%= thread.fiber_id %&gt;&lt;/a&gt;&lt;/td&gt;
433
- &lt;td&gt;&lt;%= thread.total_time %&gt;&lt;/td&gt;
434
- &lt;/tr&gt;
435
- &lt;% end %&gt;
436
- &lt;/table&gt;
437
- &lt;!-- Methods Tables --&gt;
438
- &lt;%
439
- for thread in @result.threads
440
- methods = thread.methods
441
- total_time = thread.total_time
442
- %&gt;
443
- &lt;h2&gt;&lt;a name=&quot;&lt;%= thread.fiber_id %&gt;&quot;&gt;Thread &lt;%= thread.id %&gt;, Fiber: &lt;%= thread.fiber_id %&gt;&lt;/a&gt;&lt;/h2&gt;
444
- &lt;table&gt;
445
- &lt;thead&gt;
446
- &lt;tr&gt;
447
- &lt;th&gt;%Total&lt;/th&gt;
448
- &lt;th&gt;%Self&lt;/th&gt;
449
- &lt;th&gt;Total&lt;/th&gt;
450
- &lt;th&gt;Self&lt;/th&gt;
451
- &lt;th&gt;Wait&lt;/th&gt;
452
- &lt;th&gt;Child&lt;/th&gt;
453
- &lt;th&gt;Calls&lt;/th&gt;
454
- &lt;th class=&quot;method_name&quot;&gt;Name&lt;/th&gt;
455
- &lt;th&gt;Line&lt;/th&gt;
456
- &lt;/tr&gt;
457
- &lt;/thead&gt;
458
- &lt;tbody&gt;
459
- &lt;%
460
- min_time = @options[:min_time] || (@options[:nonzero] ? 0.005 : nil)
461
- methods.sort_by(&amp;sort_method).reverse_each do |method|
462
- total_percentage = (method.total_time/total_time) * 100
463
- next if total_percentage &lt; min_percent
464
- next if min_time &amp;&amp; method.total_time &lt; min_time
465
- self_percentage = (method.self_time/total_time) * 100
466
- %&gt;
467
- &lt;!-- Parents --&gt;
468
- &lt;%
469
- for caller in method.aggregate_parents.sort_by(&amp;:total_time)
470
- next unless caller.parent
471
- next if min_time &amp;&amp; caller.total_time &lt; min_time
472
- %&gt;
473
- &lt;tr&gt;
474
- &lt;td&gt;&amp;nbsp;&lt;/td&gt;
475
- &lt;td&gt;&amp;nbsp;&lt;/td&gt;
476
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, caller.total_time) %&gt;&lt;/td&gt;
477
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, caller.self_time) %&gt;&lt;/td&gt;
478
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, caller.wait_time) %&gt;&lt;/td&gt;
479
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, caller.children_time) %&gt;&lt;/td&gt;
480
- &lt;td&gt;&lt;%= &quot;#{caller.called}/#{method.called}&quot; %&gt;&lt;/td&gt;
481
- &lt;td class=&quot;method_name&quot;&gt;&lt;%= create_link(thread, total_time, caller.parent.target) %&gt;&lt;/td&gt;
482
- &lt;td&gt;&lt;%= file_link(caller.parent.target.source_file, caller.line) %&gt;&lt;/td&gt;
483
- &lt;/tr&gt;
484
- &lt;% end %&gt;
485
- &lt;tr class=&quot;method&quot;&gt;
486
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f\%&quot;, total_percentage) %&gt;&lt;/td&gt;
487
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f\%&quot;, self_percentage) %&gt;&lt;/td&gt;
488
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, method.total_time) %&gt;&lt;/td&gt;
489
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, method.self_time) %&gt;&lt;/td&gt;
490
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, method.wait_time) %&gt;&lt;/td&gt;
491
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, method.children_time) %&gt;&lt;/td&gt;
492
- &lt;td&gt;&lt;%= sprintf(&quot;%i&quot;, method.called) %&gt;&lt;/td&gt;
493
- &lt;td class=&quot;method_name&quot;&gt;
494
- &lt;a name=&quot;&lt;%= method_href(thread, method) %&gt;&quot;&gt;
495
- &lt;%= method.recursive? ? &quot;*&quot; : &quot; &quot;%&gt;&lt;%= h method.full_name %&gt;
496
- &lt;/a&gt;
497
- &lt;/td&gt;
498
- &lt;td&gt;&lt;%= file_link(method.source_file, method.line) %&gt;&lt;/td&gt;
499
- &lt;/tr&gt;
500
- &lt;!-- Children --&gt;
501
- &lt;%
502
- for callee in method.aggregate_children.sort_by(&amp;:total_time).reverse
503
- next if min_time &amp;&amp; callee.total_time &lt; min_time
504
- %&gt;
505
- &lt;tr&gt;
506
- &lt;td&gt;&amp;nbsp;&lt;/td&gt;
507
- &lt;td&gt;&amp;nbsp;&lt;/td&gt;
508
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, callee.total_time) %&gt;&lt;/td&gt;
509
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, callee.self_time) %&gt;&lt;/td&gt;
510
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, callee.wait_time) %&gt;&lt;/td&gt;
511
- &lt;td&gt;&lt;%= sprintf(&quot;%.2f&quot;, callee.children_time) %&gt;&lt;/td&gt;
512
- &lt;td&gt;&lt;%= &quot;#{callee.called}/#{callee.target.called}&quot; %&gt;&lt;/td&gt;
513
- &lt;td class=&quot;method_name&quot;&gt;&lt;%= create_link(thread, total_time, callee.target) %&gt;&lt;/td&gt;
514
- &lt;td&gt;&lt;%= file_link(method.source_file, callee.line) %&gt;&lt;/td&gt;
515
- &lt;/tr&gt;
516
- &lt;% end %&gt;
517
- &lt;!-- Create divider row --&gt;
518
- &lt;tr class=&quot;break&quot;&gt;&lt;td colspan=&quot;9&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
519
- &lt;% end %&gt;
520
- &lt;/tbody&gt;
521
- &lt;tfoot&gt;
522
- &lt;tr&gt;
523
- &lt;td colspan=&quot;9&quot;&gt;* indicates recursively called methods&lt;/td&gt;
524
- &lt;/tr&gt;
525
- &lt;/tfoot&gt;
526
- &lt;/table&gt;
527
- &lt;% end %&gt;
528
- &lt;/body&gt;
529
- &lt;/html&gt;&#39;</span>
530
- <span class="ruby-keyword">end</span></pre>
531
- </div>
532
-
533
- </div>
534
-
535
-
536
-
537
-
538
- </div>
539
-
540
-
541
- </section>
542
-
543
- </section>
544
- </main>
545
-
546
-
547
- <footer id="validator-badges" role="contentinfo">
548
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
549
- <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.2.
550
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
551
- </footer>
552
-