ruby-prof 0.13.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES +14 -0
- data/README.rdoc +1 -1
- data/Rakefile +2 -3
- data/bin/ruby-prof +4 -4
- data/bin/ruby-prof-check-trace +45 -0
- data/doc/LICENSE.html +49 -88
- data/doc/README_rdoc.html +92 -106
- data/doc/Rack.html +47 -116
- data/doc/Rack/RubyProf.html +119 -174
- data/doc/RubyProf.html +184 -216
- data/doc/RubyProf/AbstractPrinter.html +131 -162
- data/doc/RubyProf/AggregateCallInfo.html +136 -166
- data/doc/RubyProf/CallInfo.html +113 -154
- data/doc/RubyProf/CallInfoPrinter.html +56 -123
- data/doc/RubyProf/CallInfoVisitor.html +87 -216
- data/doc/RubyProf/CallStackPrinter.html +222 -215
- data/doc/RubyProf/CallTreePrinter.html +91 -142
- data/doc/RubyProf/Cmd.html +115 -157
- data/doc/RubyProf/DotPrinter.html +88 -140
- data/doc/RubyProf/FlatPrinter.html +66 -129
- data/doc/RubyProf/FlatPrinterWithLineNumbers.html +69 -132
- data/doc/RubyProf/GraphHtmlPrinter.html +115 -166
- data/doc/RubyProf/GraphPrinter.html +58 -125
- data/doc/RubyProf/MethodInfo.html +147 -172
- data/doc/RubyProf/MultiPrinter.html +104 -150
- data/doc/RubyProf/Profile.html +125 -179
- data/doc/RubyProf/ProfileTask.html +117 -157
- data/doc/RubyProf/Test.html +115 -154
- data/doc/RubyProf/Thread.html +87 -147
- data/doc/created.rid +13 -14
- data/doc/examples/flat_txt.html +51 -90
- data/doc/examples/graph_html.html +852 -0
- data/doc/examples/graph_txt.html +64 -92
- data/doc/fonts.css +167 -0
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/index.html +75 -65
- data/doc/js/darkfish.js +0 -15
- data/doc/js/search.js +20 -5
- data/doc/js/search_index.js +1 -1
- data/doc/rdoc.css +255 -218
- data/doc/table_of_contents.html +751 -353
- data/ext/ruby_prof/extconf.rb +20 -22
- data/ext/ruby_prof/rp_measure_allocations.c +9 -5
- data/ext/ruby_prof/rp_measure_gc_runs.c +8 -0
- data/ext/ruby_prof/rp_measure_gc_time.c +5 -2
- data/ext/ruby_prof/rp_measure_wall_time.c +1 -0
- data/ext/ruby_prof/rp_method.c +0 -9
- data/ext/ruby_prof/rp_method.h +1 -6
- data/ext/ruby_prof/ruby_prof.c +32 -112
- data/ext/ruby_prof/ruby_prof.h +9 -10
- data/lib/ruby-prof.rb +2 -1
- data/lib/ruby-prof/aggregate_call_info.rb +4 -6
- data/lib/ruby-prof/call_info_visitor.rb +42 -44
- data/lib/ruby-prof/printers/graph_html_printer.rb +0 -8
- data/lib/ruby-prof/profile.rb +4 -4
- data/lib/ruby-prof/rack.rb +47 -47
- data/lib/ruby-prof/task.rb +0 -0
- data/lib/ruby-prof/thread.rb +22 -22
- data/lib/ruby-prof/version.rb +3 -0
- data/ruby-prof.gemspec +7 -11
- data/test/call_info_test.rb +78 -78
- data/test/call_info_visitor_test.rb +31 -31
- data/test/fiber_test.rb +2 -2
- data/test/measure_gc_runs_test.rb +1 -1
- data/test/measure_process_time_test.rb +7 -6
- data/test/printers_test.rb +4 -8
- data/test/recursive_test.rb +5 -9
- data/test/test_helper.rb +1 -1
- data/test/unique_call_path_test.rb +7 -29
- data/test/yarv_test.rb +55 -0
- metadata +63 -55
- data/ext/ruby_prof/version.h +0 -7
- data/lib/ruby-prof/test.rb +0 -150
- data/test/exec_test.rb +0 -14
- data/test/test_suite.rb +0 -37
data/doc/RubyProf/Profile.html
CHANGED
@@ -2,182 +2,115 @@
|
|
2
2
|
|
3
3
|
<html>
|
4
4
|
<head>
|
5
|
-
<meta
|
5
|
+
<meta charset="UTF-8">
|
6
6
|
|
7
7
|
<title>class RubyProf::Profile - ruby-prof</title>
|
8
8
|
|
9
|
-
<link
|
9
|
+
<link href="../fonts.css" rel="stylesheet">
|
10
|
+
<link href="../rdoc.css" rel="stylesheet">
|
10
11
|
|
11
12
|
<script type="text/javascript">
|
12
13
|
var rdoc_rel_prefix = "../";
|
13
14
|
</script>
|
14
15
|
|
15
|
-
<script
|
16
|
-
<script
|
17
|
-
<script
|
18
|
-
<script
|
19
|
-
<script
|
20
|
-
<script
|
16
|
+
<script src="../js/jquery.js"></script>
|
17
|
+
<script src="../js/navigation.js"></script>
|
18
|
+
<script src="../js/search_index.js"></script>
|
19
|
+
<script src="../js/search.js"></script>
|
20
|
+
<script src="../js/searcher.js"></script>
|
21
|
+
<script src="../js/darkfish.js"></script>
|
21
22
|
|
22
23
|
|
23
|
-
<body id="top" class="class">
|
24
|
-
<nav
|
25
|
-
<
|
26
|
-
|
27
|
-
|
24
|
+
<body id="top" role="document" class="class">
|
25
|
+
<nav role="navigation">
|
26
|
+
<div id="project-navigation">
|
27
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
28
|
+
<h2>
|
29
|
+
<a href="../index.html" rel="home">Home</a>
|
30
|
+
</h2>
|
31
|
+
|
32
|
+
<div id="table-of-contents-navigation">
|
33
|
+
<a href="../table_of_contents.html#pages">Pages</a>
|
28
34
|
<a href="../table_of_contents.html#classes">Classes</a>
|
29
35
|
<a href="../table_of_contents.html#methods">Methods</a>
|
30
|
-
</
|
31
|
-
</
|
32
|
-
|
36
|
+
</div>
|
37
|
+
</div>
|
33
38
|
|
34
|
-
|
39
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
35
40
|
<form action="#" method="get" accept-charset="utf-8">
|
36
|
-
<
|
37
|
-
<input
|
41
|
+
<div id="search-field-wrapper">
|
42
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
43
|
+
aria-autocomplete="list" aria-controls="search-results"
|
44
|
+
type="text" name="search" placeholder="Search" spellcheck="false"
|
38
45
|
title="Type to search, Up and Down to navigate, Enter to load">
|
39
|
-
</
|
40
|
-
</form>
|
46
|
+
</div>
|
41
47
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
<nav id="file-list-section" class="section">
|
48
|
-
<h3 class="section-header">Defined In</h3>
|
49
|
-
<ul>
|
50
|
-
<li>lib/ruby-prof/profile.rb
|
51
|
-
<li>ext/ruby_prof/ruby_prof.c
|
52
|
-
</ul>
|
53
|
-
</nav>
|
48
|
+
<ul id="search-results" aria-label="Search Results"
|
49
|
+
aria-busy="false" aria-expanded="false"
|
50
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
51
|
+
</form>
|
52
|
+
</div>
|
54
53
|
|
55
|
-
|
56
54
|
</div>
|
57
55
|
|
56
|
+
|
57
|
+
|
58
58
|
<div id="class-metadata">
|
59
59
|
|
60
|
-
<
|
61
|
-
<h3
|
60
|
+
<div id="parent-class-section" class="nav-section">
|
61
|
+
<h3>Parent</h3>
|
62
|
+
|
62
63
|
|
63
64
|
<p class="link">Object
|
64
65
|
|
65
|
-
</
|
66
|
+
</div>
|
66
67
|
|
67
68
|
|
69
|
+
|
68
70
|
<!-- Method Quickref -->
|
69
|
-
<
|
70
|
-
<h3
|
71
|
+
<div id="method-list-section" class="nav-section">
|
72
|
+
<h3>Methods</h3>
|
71
73
|
|
72
|
-
<ul class="link-list">
|
74
|
+
<ul class="link-list" role="directory">
|
73
75
|
|
74
|
-
<li><a href="#method-c-new">::new</a>
|
76
|
+
<li ><a href="#method-c-new">::new</a>
|
75
77
|
|
76
|
-
<li><a href="#method-c-profile">::profile</a>
|
78
|
+
<li ><a href="#method-c-profile">::profile</a>
|
77
79
|
|
78
|
-
<li><a href="#method-i-detect_recursion">#detect_recursion</a>
|
80
|
+
<li ><a href="#method-i-detect_recursion">#detect_recursion</a>
|
79
81
|
|
80
|
-
<li><a href="#method-i-eliminate_methods-21">#eliminate_methods!</a>
|
82
|
+
<li ><a href="#method-i-eliminate_methods-21">#eliminate_methods!</a>
|
81
83
|
|
82
|
-
<li><a href="#method-i-pause">#pause</a>
|
84
|
+
<li ><a href="#method-i-pause">#pause</a>
|
83
85
|
|
84
|
-
<li><a href="#method-i-paused-3F">#paused?</a>
|
86
|
+
<li ><a href="#method-i-paused-3F">#paused?</a>
|
85
87
|
|
86
|
-
<li><a href="#method-i-post_process">#post_process</a>
|
88
|
+
<li ><a href="#method-i-post_process">#post_process</a>
|
87
89
|
|
88
|
-
<li><a href="#method-i-resume">#resume</a>
|
90
|
+
<li ><a href="#method-i-resume">#resume</a>
|
89
91
|
|
90
|
-
<li><a href="#method-i-running-3F">#running?</a>
|
92
|
+
<li ><a href="#method-i-running-3F">#running?</a>
|
91
93
|
|
92
|
-
<li><a href="#method-i-start">#start</a>
|
94
|
+
<li ><a href="#method-i-start">#start</a>
|
93
95
|
|
94
|
-
<li><a href="#method-i-stop">#stop</a>
|
96
|
+
<li ><a href="#method-i-stop">#stop</a>
|
95
97
|
|
96
|
-
<li><a href="#method-i-threads">#threads</a>
|
98
|
+
<li ><a href="#method-i-threads">#threads</a>
|
97
99
|
|
98
100
|
</ul>
|
99
|
-
</
|
100
|
-
|
101
|
-
</div>
|
102
|
-
|
103
|
-
<div id="project-metadata">
|
104
|
-
<nav id="fileindex-section" class="section project-section">
|
105
|
-
<h3 class="section-header">Pages</h3>
|
106
|
-
|
107
|
-
<ul>
|
108
|
-
|
109
|
-
<li class="file"><a href="../LICENSE.html">LICENSE</a>
|
110
|
-
|
111
|
-
<li class="file"><a href="../README_rdoc.html">README</a>
|
112
|
-
|
113
|
-
<li class="file"><a href="../examples/flat_txt.html">flat</a>
|
114
|
-
|
115
|
-
<li class="file"><a href="../examples/graph_txt.html">graph</a>
|
116
|
-
|
117
|
-
</ul>
|
118
|
-
</nav>
|
119
|
-
|
120
|
-
<nav id="classindex-section" class="section project-section">
|
121
|
-
<h3 class="section-header">Class and Module Index</h3>
|
122
|
-
|
123
|
-
<ul class="link-list">
|
124
|
-
|
125
|
-
<li><a href="../RubyProf.html">RubyProf</a>
|
126
|
-
|
127
|
-
<li><a href="../RubyProf/AbstractPrinter.html">RubyProf::AbstractPrinter</a>
|
128
|
-
|
129
|
-
<li><a href="../RubyProf/AggregateCallInfo.html">RubyProf::AggregateCallInfo</a>
|
130
|
-
|
131
|
-
<li><a href="../RubyProf/CallInfo.html">RubyProf::CallInfo</a>
|
132
|
-
|
133
|
-
<li><a href="../RubyProf/CallInfoPrinter.html">RubyProf::CallInfoPrinter</a>
|
134
|
-
|
135
|
-
<li><a href="../RubyProf/CallInfoVisitor.html">RubyProf::CallInfoVisitor</a>
|
136
|
-
|
137
|
-
<li><a href="../RubyProf/CallStackPrinter.html">RubyProf::CallStackPrinter</a>
|
138
|
-
|
139
|
-
<li><a href="../RubyProf/CallTreePrinter.html">RubyProf::CallTreePrinter</a>
|
140
|
-
|
141
|
-
<li><a href="../RubyProf/Cmd.html">RubyProf::Cmd</a>
|
142
|
-
|
143
|
-
<li><a href="../RubyProf/DotPrinter.html">RubyProf::DotPrinter</a>
|
144
|
-
|
145
|
-
<li><a href="../RubyProf/FlatPrinter.html">RubyProf::FlatPrinter</a>
|
146
|
-
|
147
|
-
<li><a href="../RubyProf/FlatPrinterWithLineNumbers.html">RubyProf::FlatPrinterWithLineNumbers</a>
|
148
|
-
|
149
|
-
<li><a href="../RubyProf/GraphHtmlPrinter.html">RubyProf::GraphHtmlPrinter</a>
|
150
|
-
|
151
|
-
<li><a href="../RubyProf/GraphPrinter.html">RubyProf::GraphPrinter</a>
|
152
|
-
|
153
|
-
<li><a href="../RubyProf/MethodInfo.html">RubyProf::MethodInfo</a>
|
154
|
-
|
155
|
-
<li><a href="../RubyProf/MultiPrinter.html">RubyProf::MultiPrinter</a>
|
156
|
-
|
157
|
-
<li><a href="../RubyProf/Profile.html">RubyProf::Profile</a>
|
158
|
-
|
159
|
-
<li><a href="../RubyProf/ProfileTask.html">RubyProf::ProfileTask</a>
|
160
|
-
|
161
|
-
<li><a href="../RubyProf/Test.html">RubyProf::Test</a>
|
162
|
-
|
163
|
-
<li><a href="../RubyProf/Thread.html">RubyProf::Thread</a>
|
164
|
-
|
165
|
-
<li><a href="../Rack.html">Rack</a>
|
166
|
-
|
167
|
-
<li><a href="../Rack/RubyProf.html">Rack::RubyProf</a>
|
168
|
-
|
169
|
-
</ul>
|
170
|
-
</nav>
|
101
|
+
</div>
|
171
102
|
|
172
103
|
</div>
|
173
104
|
</nav>
|
174
105
|
|
175
|
-
<
|
176
|
-
<h1
|
106
|
+
<main role="main" aria-labelledby="class-RubyProf::Profile">
|
107
|
+
<h1 id="class-RubyProf::Profile" class="class">
|
108
|
+
class RubyProf::Profile
|
109
|
+
</h1>
|
177
110
|
|
178
|
-
<
|
111
|
+
<section class="description">
|
179
112
|
|
180
|
-
</
|
113
|
+
</section>
|
181
114
|
|
182
115
|
|
183
116
|
|
@@ -191,10 +124,11 @@
|
|
191
124
|
|
192
125
|
|
193
126
|
|
194
|
-
<!-- Methods -->
|
195
127
|
|
196
|
-
<section id="public-class-5Buntitled-5D-method-details" class="method-section
|
197
|
-
|
128
|
+
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
129
|
+
<header>
|
130
|
+
<h3>Public Class Methods</h3>
|
131
|
+
</header>
|
198
132
|
|
199
133
|
|
200
134
|
<div id="method-c-new" class="method-detail ">
|
@@ -215,7 +149,7 @@
|
|
215
149
|
|
216
150
|
<p>Returns a new profiler.</p>
|
217
151
|
|
218
|
-
<h2 id="method-c-new-label-Parameters">Parameters
|
152
|
+
<h2 id="method-c-new-label-Parameters">Parameters<span><a href="#method-c-new-label-Parameters">¶</a> <a href="#documentation">↑</a></span></h2>
|
219
153
|
<dl class="rdoc-list note-list"><dt>mode
|
220
154
|
<dd>
|
221
155
|
<p>Measure mode (optional). Specifies the profile measure mode. If not
|
@@ -225,6 +159,7 @@ specified, defaults to RubyProf::WALL_TIME.</p>
|
|
225
159
|
<p>Threads to exclude from the profiling results (optional).</p>
|
226
160
|
</dd></dl>
|
227
161
|
|
162
|
+
|
228
163
|
|
229
164
|
|
230
165
|
<div class="method-source-code" id="new-source">
|
@@ -270,14 +205,14 @@ prof_initialize(int argc, VALUE *argv, VALUE self)
|
|
270
205
|
|
271
206
|
return self;
|
272
207
|
}</pre>
|
273
|
-
</div
|
208
|
+
</div>
|
274
209
|
|
275
210
|
</div>
|
276
211
|
|
277
212
|
|
278
213
|
|
279
214
|
|
280
|
-
</div
|
215
|
+
</div>
|
281
216
|
|
282
217
|
|
283
218
|
<div id="method-c-profile" class="method-detail ">
|
@@ -298,6 +233,7 @@ prof_initialize(int argc, VALUE *argv, VALUE self)
|
|
298
233
|
|
299
234
|
<p>Profiles the specified block and returns a RubyProf::Result object.</p>
|
300
235
|
|
236
|
+
|
301
237
|
|
302
238
|
|
303
239
|
<div class="method-source-code" id="profile-source">
|
@@ -316,20 +252,22 @@ prof_profile(int argc, VALUE *argv, VALUE klass)
|
|
316
252
|
rb_protect(rb_yield, profile, &result);
|
317
253
|
return prof_stop(profile);
|
318
254
|
}</pre>
|
319
|
-
</div
|
255
|
+
</div>
|
320
256
|
|
321
257
|
</div>
|
322
258
|
|
323
259
|
|
324
260
|
|
325
261
|
|
326
|
-
</div
|
262
|
+
</div>
|
327
263
|
|
328
264
|
|
329
|
-
</section
|
265
|
+
</section>
|
330
266
|
|
331
|
-
<section id="public-instance-5Buntitled-5D-method-details" class="method-section
|
332
|
-
|
267
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
268
|
+
<header>
|
269
|
+
<h3>Public Instance Methods</h3>
|
270
|
+
</header>
|
333
271
|
|
334
272
|
|
335
273
|
<div id="method-i-detect_recursion" class="method-detail ">
|
@@ -337,7 +275,9 @@ prof_profile(int argc, VALUE *argv, VALUE klass)
|
|
337
275
|
<div class="method-heading">
|
338
276
|
<span class="method-name">detect_recursion</span><span
|
339
277
|
class="method-args">(thread)</span>
|
278
|
+
|
340
279
|
<span class="method-click-advice">click to toggle source</span>
|
280
|
+
|
341
281
|
</div>
|
342
282
|
|
343
283
|
|
@@ -345,6 +285,7 @@ prof_profile(int argc, VALUE *argv, VALUE klass)
|
|
345
285
|
|
346
286
|
<p>This method detect recursive calls in the call graph.</p>
|
347
287
|
|
288
|
+
|
348
289
|
|
349
290
|
|
350
291
|
<div class="method-source-code" id="detect_recursion-source">
|
@@ -358,24 +299,24 @@ prof_profile(int argc, VALUE *argv, VALUE klass)
|
|
358
299
|
<span class="ruby-identifier">visitor</span>.<span class="ruby-identifier">visit</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">call_info</span>, <span class="ruby-identifier">event</span><span class="ruby-operator">|</span>
|
359
300
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">event</span>
|
360
301
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:enter</span>
|
361
|
-
<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">target</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
362
|
-
|
302
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">call_info</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">1</span>
|
303
|
+
<span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">recursive</span> = <span class="ruby-keyword">true</span>
|
304
|
+
<span class="ruby-keyword">end</span>
|
363
305
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:exit</span>
|
364
|
-
<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">target</span>] <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
365
|
-
<span class="ruby-keyword">if</span> <span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">target</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
306
|
+
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">visited_methods</span>[<span class="ruby-identifier">call_info</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>
|
366
307
|
<span class="ruby-identifier">visited_methods</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">call_info</span>.<span class="ruby-identifier">target</span>)
|
367
308
|
<span class="ruby-keyword">end</span>
|
368
309
|
<span class="ruby-keyword">end</span>
|
369
310
|
<span class="ruby-keyword">end</span>
|
370
311
|
<span class="ruby-keyword">end</span></pre>
|
371
|
-
</div
|
312
|
+
</div>
|
372
313
|
|
373
314
|
</div>
|
374
315
|
|
375
316
|
|
376
317
|
|
377
318
|
|
378
|
-
</div
|
319
|
+
</div>
|
379
320
|
|
380
321
|
|
381
322
|
<div id="method-i-eliminate_methods-21" class="method-detail ">
|
@@ -383,7 +324,9 @@ prof_profile(int argc, VALUE *argv, VALUE klass)
|
|
383
324
|
<div class="method-heading">
|
384
325
|
<span class="method-name">eliminate_methods!</span><span
|
385
326
|
class="method-args">(matchers)</span>
|
327
|
+
|
386
328
|
<span class="method-click-advice">click to toggle source</span>
|
329
|
+
|
387
330
|
</div>
|
388
331
|
|
389
332
|
|
@@ -393,6 +336,7 @@ prof_profile(int argc, VALUE *argv, VALUE klass)
|
|
393
336
|
callers. matchers can be a list of strings or regular expressions or the
|
394
337
|
name of a file containing regexps.</p>
|
395
338
|
|
339
|
+
|
396
340
|
|
397
341
|
|
398
342
|
<div class="method-source-code" id="eliminate_methods-21-source">
|
@@ -405,14 +349,14 @@ name of a file containing regexps.</p>
|
|
405
349
|
<span class="ruby-keyword">end</span>
|
406
350
|
<span class="ruby-identifier">eliminated</span>
|
407
351
|
<span class="ruby-keyword">end</span></pre>
|
408
|
-
</div
|
352
|
+
</div>
|
409
353
|
|
410
354
|
</div>
|
411
355
|
|
412
356
|
|
413
357
|
|
414
358
|
|
415
|
-
</div
|
359
|
+
</div>
|
416
360
|
|
417
361
|
|
418
362
|
<div id="method-i-pause" class="method-detail ">
|
@@ -433,6 +377,7 @@ name of a file containing regexps.</p>
|
|
433
377
|
|
434
378
|
<p>Pauses collecting profile data.</p>
|
435
379
|
|
380
|
+
|
436
381
|
|
437
382
|
|
438
383
|
<div class="method-source-code" id="pause-source">
|
@@ -454,14 +399,14 @@ prof_pause(VALUE self)
|
|
454
399
|
|
455
400
|
return self;
|
456
401
|
}</pre>
|
457
|
-
</div
|
402
|
+
</div>
|
458
403
|
|
459
404
|
</div>
|
460
405
|
|
461
406
|
|
462
407
|
|
463
408
|
|
464
|
-
</div
|
409
|
+
</div>
|
465
410
|
|
466
411
|
|
467
412
|
<div id="method-i-paused-3F" class="method-detail ">
|
@@ -482,6 +427,7 @@ prof_pause(VALUE self)
|
|
482
427
|
|
483
428
|
<p>Returns whether a profile is currently paused.</p>
|
484
429
|
|
430
|
+
|
485
431
|
|
486
432
|
|
487
433
|
<div class="method-source-code" id="paused-3F-source">
|
@@ -491,14 +437,14 @@ prof_paused(VALUE self)
|
|
491
437
|
prof_profile_t* profile = prof_get_profile(self);
|
492
438
|
return profile->paused;
|
493
439
|
}</pre>
|
494
|
-
</div
|
440
|
+
</div>
|
495
441
|
|
496
442
|
</div>
|
497
443
|
|
498
444
|
|
499
445
|
|
500
446
|
|
501
|
-
</div
|
447
|
+
</div>
|
502
448
|
|
503
449
|
|
504
450
|
<div id="method-i-post_process" class="method-detail ">
|
@@ -506,7 +452,9 @@ prof_paused(VALUE self)
|
|
506
452
|
<div class="method-heading">
|
507
453
|
<span class="method-name">post_process</span><span
|
508
454
|
class="method-args">()</span>
|
455
|
+
|
509
456
|
<span class="method-click-advice">click to toggle source</span>
|
457
|
+
|
510
458
|
</div>
|
511
459
|
|
512
460
|
|
@@ -516,6 +464,7 @@ prof_paused(VALUE self)
|
|
516
464
|
results are returned to the user. Thus it provides a hook to do any
|
517
465
|
necessary post-processing on the call graph.</p>
|
518
466
|
|
467
|
+
|
519
468
|
|
520
469
|
|
521
470
|
<div class="method-source-code" id="post_process-source">
|
@@ -525,14 +474,14 @@ necessary post-processing on the call graph.</p>
|
|
525
474
|
<span class="ruby-identifier">detect_recursion</span>(<span class="ruby-identifier">thread</span>)
|
526
475
|
<span class="ruby-keyword">end</span>
|
527
476
|
<span class="ruby-keyword">end</span></pre>
|
528
|
-
</div
|
477
|
+
</div>
|
529
478
|
|
530
479
|
</div>
|
531
480
|
|
532
481
|
|
533
482
|
|
534
483
|
|
535
|
-
</div
|
484
|
+
</div>
|
536
485
|
|
537
486
|
|
538
487
|
<div id="method-i-resume" class="method-detail ">
|
@@ -553,6 +502,7 @@ necessary post-processing on the call graph.</p>
|
|
553
502
|
|
554
503
|
<p>Resumes recording profile data.</p>
|
555
504
|
|
505
|
+
|
556
506
|
|
557
507
|
|
558
508
|
<div class="method-source-code" id="resume-source">
|
@@ -574,14 +524,14 @@ prof_resume(VALUE self)
|
|
574
524
|
|
575
525
|
return rb_block_given_p() ? rb_ensure(rb_yield, self, prof_pause, self) : self;
|
576
526
|
}</pre>
|
577
|
-
</div
|
527
|
+
</div>
|
578
528
|
|
579
529
|
</div>
|
580
530
|
|
581
531
|
|
582
532
|
|
583
533
|
|
584
|
-
</div
|
534
|
+
</div>
|
585
535
|
|
586
536
|
|
587
537
|
<div id="method-i-running-3F" class="method-detail ">
|
@@ -602,6 +552,7 @@ prof_resume(VALUE self)
|
|
602
552
|
|
603
553
|
<p>Returns whether a profile is currently running.</p>
|
604
554
|
|
555
|
+
|
605
556
|
|
606
557
|
|
607
558
|
<div class="method-source-code" id="running-3F-source">
|
@@ -611,14 +562,14 @@ prof_running(VALUE self)
|
|
611
562
|
prof_profile_t* profile = prof_get_profile(self);
|
612
563
|
return profile->running;
|
613
564
|
}</pre>
|
614
|
-
</div
|
565
|
+
</div>
|
615
566
|
|
616
567
|
</div>
|
617
568
|
|
618
569
|
|
619
570
|
|
620
571
|
|
621
|
-
</div
|
572
|
+
</div>
|
622
573
|
|
623
574
|
|
624
575
|
<div id="method-i-start" class="method-detail ">
|
@@ -639,6 +590,7 @@ prof_running(VALUE self)
|
|
639
590
|
|
640
591
|
<p>Starts recording profile data.</p>
|
641
592
|
|
593
|
+
|
642
594
|
|
643
595
|
|
644
596
|
<div class="method-source-code" id="start-source">
|
@@ -648,19 +600,12 @@ prof_start(VALUE self)
|
|
648
600
|
char* trace_file_name;
|
649
601
|
|
650
602
|
prof_profile_t* profile = prof_get_profile(self);
|
651
|
-
|
603
|
+
|
652
604
|
if (profile->running == Qtrue)
|
653
605
|
{
|
654
606
|
rb_raise(rb_eRuntimeError, "RubyProf.start was already called");
|
655
607
|
}
|
656
608
|
|
657
|
-
#ifndef RUBY_VM
|
658
|
-
if (pCurrentProfile != NULL)
|
659
|
-
{
|
660
|
-
rb_raise(rb_eRuntimeError, "Only one profile can run at a time on Ruby 1.8.*");
|
661
|
-
}
|
662
|
-
#endif
|
663
|
-
|
664
609
|
profile->running = Qtrue;
|
665
610
|
profile->paused = Qfalse;
|
666
611
|
profile->last_thread_data = NULL;
|
@@ -687,14 +632,14 @@ prof_start(VALUE self)
|
|
687
632
|
prof_install_hook(self);
|
688
633
|
return self;
|
689
634
|
}</pre>
|
690
|
-
</div
|
635
|
+
</div>
|
691
636
|
|
692
637
|
</div>
|
693
638
|
|
694
639
|
|
695
640
|
|
696
641
|
|
697
|
-
</div
|
642
|
+
</div>
|
698
643
|
|
699
644
|
|
700
645
|
<div id="method-i-stop" class="method-detail ">
|
@@ -715,6 +660,7 @@ prof_start(VALUE self)
|
|
715
660
|
|
716
661
|
<p>Stops collecting profile data.</p>
|
717
662
|
|
663
|
+
|
718
664
|
|
719
665
|
|
720
666
|
<div class="method-source-code" id="stop-source">
|
@@ -756,14 +702,14 @@ prof_stop(VALUE self)
|
|
756
702
|
|
757
703
|
return self;
|
758
704
|
}</pre>
|
759
|
-
</div
|
705
|
+
</div>
|
760
706
|
|
761
707
|
</div>
|
762
708
|
|
763
709
|
|
764
710
|
|
765
711
|
|
766
|
-
</div
|
712
|
+
</div>
|
767
713
|
|
768
714
|
|
769
715
|
<div id="method-i-threads" class="method-detail ">
|
@@ -785,6 +731,7 @@ prof_stop(VALUE self)
|
|
785
731
|
<p>Returns an array of <a href="Thread.html">RubyProf::Thread</a> instances
|
786
732
|
that were executed while the the program was being run.</p>
|
787
733
|
|
734
|
+
|
788
735
|
|
789
736
|
|
790
737
|
<div class="method-source-code" id="threads-source">
|
@@ -796,26 +743,25 @@ prof_threads(VALUE self)
|
|
796
743
|
st_foreach(profile->threads_tbl, collect_threads, result);
|
797
744
|
return result;
|
798
745
|
}</pre>
|
799
|
-
</div
|
746
|
+
</div>
|
800
747
|
|
801
748
|
</div>
|
802
749
|
|
803
750
|
|
804
751
|
|
805
752
|
|
806
|
-
</div
|
753
|
+
</div>
|
807
754
|
|
808
755
|
|
809
|
-
</section
|
756
|
+
</section>
|
810
757
|
|
811
|
-
</section
|
812
|
-
|
813
|
-
</div><!-- documentation -->
|
758
|
+
</section>
|
759
|
+
</main>
|
814
760
|
|
815
761
|
|
816
|
-
<footer id="validator-badges">
|
817
|
-
<p><a href="http://validator.w3.org/check/referer">
|
818
|
-
<p>Generated by <a href="
|
819
|
-
<p>
|
762
|
+
<footer id="validator-badges" role="contentinfo">
|
763
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
764
|
+
<p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.0.
|
765
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
820
766
|
</footer>
|
821
767
|
|