ruby-prof 0.13.0 → 0.13.1
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 +7 -0
- data/README.rdoc +8 -7
- data/doc/LICENSE.html +5 -5
- data/doc/README_rdoc.html +58 -50
- data/doc/Rack/RubyProf.html +6 -6
- data/doc/RubyProf.html +5 -4
- data/doc/RubyProf/AbstractPrinter.html +1 -1
- data/doc/RubyProf/CallInfo.html +2 -2
- data/doc/RubyProf/CallInfoPrinter.html +1 -1
- data/doc/RubyProf/CallStackPrinter.html +39 -39
- data/doc/RubyProf/CallTreePrinter.html +8 -8
- data/doc/RubyProf/Cmd.html +38 -38
- data/doc/RubyProf/DotPrinter.html +2 -2
- data/doc/RubyProf/FlatPrinterWithLineNumbers.html +3 -3
- data/doc/RubyProf/GraphHtmlPrinter.html +10 -11
- data/doc/RubyProf/MethodInfo.html +2 -2
- data/doc/RubyProf/ProfileTask.html +7 -7
- data/doc/RubyProf/Test.html +11 -11
- data/doc/created.rid +4 -4
- data/doc/examples/flat_txt.html +1 -1
- data/doc/examples/graph_txt.html +3 -3
- data/doc/index.html +58 -50
- data/doc/js/search_index.js +1 -1
- data/ext/ruby_prof/extconf.rb +1 -1
- data/ext/ruby_prof/version.h +2 -2
- data/lib/ruby-prof/printers/graph_html_printer.rb +3 -4
- data/ruby-prof.gemspec +2 -2
- data/test/multi_printer_test.rb +2 -1
- data/test/stack_printer_test.rb +4 -2
- metadata +20 -37
data/doc/examples/graph_txt.html
CHANGED
@@ -235,7 +235,7 @@ below it are the methods it called (children).</p>
|
|
235
235
|
%self - The percentage of time spent in this method
|
236
236
|
total - The time spent in this method and its children.
|
237
237
|
self - The time spent in this method.
|
238
|
-
children - The time spent in this method
|
238
|
+
children - The time spent in this method's children.
|
239
239
|
calls - The number of times this method was called.
|
240
240
|
name - The name of the method.</pre>
|
241
241
|
|
@@ -263,7 +263,7 @@ parents are shown.</p>
|
|
263
263
|
|
264
264
|
<pre>total - The time spent in the current method and it children on behalf of the parent method.
|
265
265
|
self - The time spent in this method on behalf of the parent method.
|
266
|
-
children - The time spent in this method
|
266
|
+
children - The time spent in this method's children on behalf of the parent.
|
267
267
|
calls - The number of times the parent method called this child</pre>
|
268
268
|
|
269
269
|
<p>Looking at Integer#upto again, we see that it was called 500 times from
|
@@ -281,7 +281,7 @@ children are shown.</p>
|
|
281
281
|
|
282
282
|
<pre>total - The time spent in the child, and its children, on behalf of the current method
|
283
283
|
self - The time spent in the child on behalf of the current method.
|
284
|
-
children - The time spent in the child
|
284
|
+
children - The time spent in the child's children (ie, granchildren) in behalf of the current method
|
285
285
|
calls - The number of times the child method was called by the current method.</pre>
|
286
286
|
|
287
287
|
<p>Taking our example of Integer#upto, we see that it called five other
|
data/doc/index.html
CHANGED
@@ -119,6 +119,10 @@
|
|
119
119
|
|
120
120
|
<h1 id="label-ruby-prof">ruby-prof</h1>
|
121
121
|
|
122
|
+
<p><a href="https://travis-ci.org/ruby-prof/ruby-prof"><img
|
123
|
+
src="https://travis-ci.org/ruby-prof/ruby-prof.png?branch=master"
|
124
|
+
alt="Build Status" /></a></p>
|
125
|
+
|
122
126
|
<h2 id="label-Overview">Overview</h2>
|
123
127
|
|
124
128
|
<p>ruby-prof is a fast code profiler for Ruby. Its features include:</p>
|
@@ -151,8 +155,8 @@ href="README_rdoc.html">README</a>.</p>
|
|
151
155
|
|
152
156
|
<p>ruby-prof requires Ruby 1.8.7 or 1.9.2 and higher.</p>
|
153
157
|
|
154
|
-
<p>If you are running Linux or Unix you
|
155
|
-
can be compiled when it is installed.</p>
|
158
|
+
<p>If you are running Linux or Unix you'll need a C compiler so the
|
159
|
+
extension can be compiled when it is installed.</p>
|
156
160
|
|
157
161
|
<p>If you are running Windows, then you may need to install the Windows
|
158
162
|
specific RubyGem which includes an already built extension (see Install
|
@@ -164,8 +168,8 @@ section).</p>
|
|
164
168
|
|
165
169
|
<pre>gem install ruby-prof</pre>
|
166
170
|
|
167
|
-
<p>If you
|
168
|
-
course compile it yourself via use of devkit on MinGW.</p>
|
171
|
+
<p>If you're on windows then a prebuilt binary gem is available. You may
|
172
|
+
of course compile it yourself via use of devkit on MinGW.</p>
|
169
173
|
|
170
174
|
<h2 id="label-Usage">Usage</h2>
|
171
175
|
|
@@ -182,7 +186,7 @@ For more information refer to the documentation of the ruby-prof command.</p>
|
|
182
186
|
<p>The second way is to use the ruby-prof API to profile particular segments
|
183
187
|
of code.</p>
|
184
188
|
|
185
|
-
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string"
|
189
|
+
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'ruby-prof'</span>
|
186
190
|
|
187
191
|
<span class="ruby-comment"># Profile the code</span>
|
188
192
|
<span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">start</span>
|
@@ -198,7 +202,7 @@ of code.</p>
|
|
198
202
|
|
199
203
|
<p>Alternatively, you can use a block to tell ruby-prof what to profile:</p>
|
200
204
|
|
201
|
-
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string"
|
205
|
+
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'ruby-prof'</span>
|
202
206
|
|
203
207
|
<span class="ruby-comment"># Profile the code</span>
|
204
208
|
<span class="ruby-identifier">result</span> = <span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">profile</span> <span class="ruby-keyword">do</span>
|
@@ -214,7 +218,7 @@ of code.</p>
|
|
214
218
|
|
215
219
|
<p>ruby-prof also supports pausing and resuming profiling runs.</p>
|
216
220
|
|
217
|
-
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string"
|
221
|
+
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'ruby-prof'</span>
|
218
222
|
|
219
223
|
<span class="ruby-comment"># Profile the code</span>
|
220
224
|
<span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">start</span>
|
@@ -229,7 +233,7 @@ of code.</p>
|
|
229
233
|
<p>Note that resume will automatically call start if a profiling run has not
|
230
234
|
yet started. In addition, resume can also take a block:</p>
|
231
235
|
|
232
|
-
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string"
|
236
|
+
<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">'ruby-prof'</span>
|
233
237
|
|
234
238
|
<span class="ruby-comment"># Profile the code</span>
|
235
239
|
<span class="ruby-constant">RubyProf</span>.<span class="ruby-identifier">resume</span> <span class="ruby-keyword">do</span>
|
@@ -249,10 +253,10 @@ results. This is useful for reducing connectivity in the call graph, making
|
|
249
253
|
it easier to identify the source of performance problems when using a graph
|
250
254
|
printer.</p>
|
251
255
|
|
252
|
-
<p>For example, consider Integer#times: it
|
253
|
-
much time is spent in the method itself. We
|
254
|
-
much the passed in block contributes to the time spent in the method
|
255
|
-
contains the Integer#times call.</p>
|
256
|
+
<p>For example, consider Integer#times: it's hardly ever useful to know
|
257
|
+
how much time is spent in the method itself. We're much more interested
|
258
|
+
in how much the passed in block contributes to the time spent in the method
|
259
|
+
which contains the Integer#times call.</p>
|
256
260
|
|
257
261
|
<p>Methods are eliminated from the collected data by calling
|
258
262
|
`eliminate_methods!` on the profiling result, before submitting it to a
|
@@ -279,9 +283,10 @@ profiling.</p>
|
|
279
283
|
|
280
284
|
<h2 id="label-Benchmarking+full+load+time+including+rubygems+startup+cost+%3D%3D">Benchmarking full load time including rubygems startup cost ==</h2>
|
281
285
|
|
282
|
-
<p>If you want to get a more accurate measurement of what takes all of a
|
283
|
-
bin/xxx command to load, you may want to also measure
|
284
|
-
penalty. You can do this by calling into
|
286
|
+
<p>If you want to get a more accurate measurement of what takes all of a
|
287
|
+
gem's bin/xxx command to load, you may want to also measure
|
288
|
+
rubygems' startup penalty. You can do this by calling into
|
289
|
+
bin/ruby-prof directly, ex:</p>
|
285
290
|
|
286
291
|
<p>$ gem which ruby-prof</p>
|
287
292
|
|
@@ -299,26 +304,28 @@ g:192binsome_installed_gem_command</p>
|
|
299
304
|
|
300
305
|
<h2 id="label-Profiling+Tests">Profiling Tests</h2>
|
301
306
|
|
302
|
-
<p>ruby-prof supports profiling tests cases written using Ruby
|
303
|
-
test framework (ie, test derived from Test::Unit::TestCase). To
|
304
|
-
profiling simply add the following line of code to within your test
|
307
|
+
<p>ruby-prof supports profiling tests cases written using Ruby's built-in
|
308
|
+
unit test framework (ie, test derived from Test::Unit::TestCase). To
|
309
|
+
enable profiling simply add the following line of code to within your test
|
310
|
+
class:</p>
|
305
311
|
|
306
312
|
<pre>include RubyProf::Test</pre>
|
307
313
|
|
308
314
|
<p>Each test method is profiled separately. ruby-prof will run each test
|
309
315
|
method once as a warmup and then ten additional times to gather profile
|
310
316
|
data. Note that the profile data will <strong>not</strong> include the
|
311
|
-
class
|
317
|
+
class's setup or teardown methods.</p>
|
312
318
|
|
313
319
|
<p>Separate reports are generated for each method and saved, by default, in
|
314
|
-
the test process
|
315
|
-
options, modify your test class
|
316
|
-
change test profiling options, modify
|
320
|
+
the test process's working directory. To change this, or other
|
321
|
+
profiling options, modify your test class's PROFILE_OPTIONS hash table.
|
322
|
+
To globally change test profiling options, modify
|
323
|
+
RubyProf::Test::PROFILE_OPTIONS.</p>
|
317
324
|
|
318
325
|
<h2 id="label-Profiling+Rails">Profiling Rails</h2>
|
319
326
|
|
320
327
|
<p>To profile a Rails application it is vital to run it using production like
|
321
|
-
settings (cache classes, cache view lookups, etc.). Otherwise, Rail
|
328
|
+
settings (cache classes, cache view lookups, etc.). Otherwise, Rail's
|
322
329
|
dependency loading code will overwhelm any time spent in the application
|
323
330
|
itself (our tests show that Rails dependency loading causes a roughly 6x
|
324
331
|
slowdown). The best way to do this is create a new Rails environment,
|
@@ -334,14 +341,14 @@ likely turn off caching.</p>
|
|
334
341
|
<p>Add the ruby-prof to your gemfile:</p>
|
335
342
|
|
336
343
|
<pre>group :profile do
|
337
|
-
gem
|
344
|
+
gem 'ruby-prof'
|
338
345
|
end</pre>
|
339
346
|
</li><li>
|
340
347
|
<p>Add the ruby prof rack adapter to your middleware stack. One way to do
|
341
348
|
this is by adding the following code to config.ru:</p>
|
342
349
|
|
343
350
|
<pre class="ruby"><span class="ruby-keyword">if</span> <span class="ruby-constant">Rails</span>.<span class="ruby-identifier">env</span>.<span class="ruby-identifier">profile?</span>
|
344
|
-
<span class="ruby-identifier">use</span> <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">RubyProf</span>, :<span class="ruby-identifier">path</span> =<span class="ruby-operator">></span> <span class="ruby-string"
|
351
|
+
<span class="ruby-identifier">use</span> <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">RubyProf</span>, :<span class="ruby-identifier">path</span> =<span class="ruby-operator">></span> <span class="ruby-string">'/temp/profile'</span>
|
345
352
|
<span class="ruby-keyword">end</span>
|
346
353
|
</pre>
|
347
354
|
|
@@ -373,7 +380,7 @@ profiling reports created by the previous request!</p>
|
|
373
380
|
<p>Flat profiles show the overall time spent in each method. They are a good
|
374
381
|
of quickly identifying which methods take the most time. An example of a
|
375
382
|
flat profile and an explanation can be found in <a
|
376
|
-
href="http://github.com/
|
383
|
+
href="http://github.com/ruby-prof/ruby-prof/tree/master/examples/flat.txt">examples/flat.txt</a>.</p>
|
377
384
|
|
378
385
|
<p>There are several varieties of these – run $ ruby-prof –help</p>
|
379
386
|
|
@@ -382,13 +389,13 @@ addition, they also show which methods call the current method and which
|
|
382
389
|
methods its calls. Thus they are good for understanding how methods gets
|
383
390
|
called and provide insight into the flow of your program. An example text
|
384
391
|
graph profile is located at <a
|
385
|
-
href="http://github.com/
|
392
|
+
href="http://github.com/ruby-prof/ruby-prof/tree/master/examples/graph.txt">examples/graph.txt</a>.</p>
|
386
393
|
|
387
394
|
<p>HTML Graph profiles are the same as graph profiles, except output is
|
388
395
|
generated in hyper-linked HTML. Since graph profiles can be quite large,
|
389
396
|
the embedded links make it much easier to navigate the results. An example
|
390
397
|
html graph profile is located at <a
|
391
|
-
href="http://github.com/
|
398
|
+
href="http://github.com/ruby-prof/ruby-prof/tree/master/examples/graph.html">examples/graph.html</a>.</p>
|
392
399
|
|
393
400
|
<p>Call graphs output results in the calltree profile format which is used by
|
394
401
|
KCachegrind. Call graph support was generously donated by Carl Shimer. More
|
@@ -398,14 +405,14 @@ site.</p>
|
|
398
405
|
|
399
406
|
<p>Call stack reports produce a HTML visualization of the time spent in each
|
400
407
|
execution path of the profiled code. An example can be found at <a
|
401
|
-
href="http://github.com/
|
408
|
+
href="http://github.com/ruby-prof/ruby-prof/tree/master/examples/call_stack.html">examples/stack.html</a>.</p>
|
402
409
|
|
403
410
|
<p>Another good example: [<a
|
404
411
|
href="http://twitpic.com/28z94a">twitpic.com/28z94a</a>]</p>
|
405
412
|
|
406
|
-
<p>Finally, there
|
413
|
+
<p>Finally, there's a so called MultiPrinter which can generate several
|
407
414
|
reports in one profiling run. See <a
|
408
|
-
href="http://github.com/
|
415
|
+
href="http://github.com/ruby-prof/ruby-prof/tree/master/examples/multi.stack.html">examples/multi.stack.html</a>.</p>
|
409
416
|
|
410
417
|
<p>There is also a graphviz .dot visualiser.</p>
|
411
418
|
|
@@ -427,7 +434,7 @@ call graph report in text format</p>
|
|
427
434
|
Creates a call graph report in HTML (separate files per thread)</p>
|
428
435
|
</li><li>
|
429
436
|
<p><a href="RubyProf/DotPrinter.html">RubyProf::DotPrinter</a> - Creates a
|
430
|
-
call graph report in GraphViz
|
437
|
+
call graph report in GraphViz's DOT format which can be converted to an
|
431
438
|
image</p>
|
432
439
|
</li><li>
|
433
440
|
<p><a href="RubyProf/CallTreePrinter.html">RubyProf::CallTreePrinter</a> -
|
@@ -497,8 +504,8 @@ significant CPU or disk time during a profiling run then the reported
|
|
497
504
|
results will be too large.</p>
|
498
505
|
|
499
506
|
<p>CPU time uses the CPU clock counter to measure time. The returned values
|
500
|
-
are dependent on the correctly setting the CPU
|
501
|
-
only supported on Pentium or PowerPC platforms (linux only).</p>
|
507
|
+
are dependent on the correctly setting the CPU's frequency. This mode
|
508
|
+
is only supported on Pentium or PowerPC platforms (linux only).</p>
|
502
509
|
|
503
510
|
<p>Object allocation reports show how many objects each method in a program
|
504
511
|
allocates. This support was added by Sylvain Joyeux and requires a patched
|
@@ -510,16 +517,16 @@ This support was added by Alexander Dymo and requires a patched Ruby
|
|
510
517
|
interpreter. For more information, see: <a
|
511
518
|
href="http://rubyforge.org/tracker/index.php?func=detail&aid=17676&group_id=1814&atid=7062">rubyforge.org/tracker/index.php?func=detail&aid=17676&group_id=1814&atid=7062</a></p>
|
512
519
|
|
513
|
-
<p>Garbage collection runs report how many times Ruby
|
514
|
-
invoked during a profiling session. This support was added by Jeremy
|
520
|
+
<p>Garbage collection runs report how many times Ruby's garbage collector
|
521
|
+
is invoked during a profiling session. This support was added by Jeremy
|
515
522
|
Kemper and requires a patched Ruby interpreter. For more information, see:
|
516
523
|
<a
|
517
524
|
href="http://rubyforge.org/tracker/index.php?func=detail&aid=17676&group_id=1814&atid=7062">rubyforge.org/tracker/index.php?func=detail&aid=17676&group_id=1814&atid=7062</a></p>
|
518
525
|
|
519
|
-
<p>Garbage collection time reports how much time is spent in Ruby
|
520
|
-
collector during a profiling session. This support was added by
|
521
|
-
Kemper and requires a patched Ruby interpreter. For more
|
522
|
-
<a
|
526
|
+
<p>Garbage collection time reports how much time is spent in Ruby's
|
527
|
+
garbage collector during a profiling session. This support was added by
|
528
|
+
Jeremy Kemper and requires a patched Ruby interpreter. For more
|
529
|
+
information, see: <a
|
523
530
|
href="http://rubyforge.org/tracker/index.php?func=detail&aid=17676&group_id=1814&atid=7062">rubyforge.org/tracker/index.php?func=detail&aid=17676&group_id=1814&atid=7062</a></p>
|
524
531
|
|
525
532
|
<p>To set the measurement:</p>
|
@@ -586,7 +593,7 @@ profiling run and is otherwise quiescent.</p>
|
|
586
593
|
|
587
594
|
<p>On both platforms, cpu time is measured using the RDTSC assembly function
|
588
595
|
provided by the Pentium and PowerPC platforms. CPU time is dependent on the
|
589
|
-
cpu
|
596
|
+
cpu's frequency. On Linux, ruby-prof attempts to read this value from
|
590
597
|
“/proc/cpuinfo.” On Windows, you must manually specify the clock
|
591
598
|
frequency. This can be done using the RUBY_PROF_CPU_FREQUENCY environment
|
592
599
|
variable:</p>
|
@@ -603,18 +610,18 @@ variable:</p>
|
|
603
610
|
context switches in 1.8. As a result, the timings ruby-prof reports for
|
604
611
|
each thread may be slightly inaccurate. In particular, this will happen
|
605
612
|
for newly spawned threads that go to sleep immediately (their first call).
|
606
|
-
For instance, if you use Ruby
|
607
|
-
2 seconds will be assigned to the foreground thread and not the newly
|
613
|
+
For instance, if you use Ruby's timeout library to wait for 2 seconds,
|
614
|
+
the 2 seconds will be assigned to the foreground thread and not the newly
|
608
615
|
created background thread. These errors can largely be avoided if the
|
609
616
|
background thread performs any operation before going to sleep.</p>
|
610
617
|
|
611
618
|
<h2 id="label-Performance">Performance</h2>
|
612
619
|
|
613
|
-
<p>Significant effort has been put into reducing ruby-prof
|
614
|
-
as possible. Our tests show that the overhead associated with
|
615
|
-
code varies considerably with the code being profiled. Most
|
616
|
-
run approximately twice as slow while highly recursive
|
617
|
-
fibonacci series test) will run three times slower.</p>
|
620
|
+
<p>Significant effort has been put into reducing ruby-prof's overhead as
|
621
|
+
much as possible. Our tests show that the overhead associated with
|
622
|
+
profiling code varies considerably with the code being profiled. Most
|
623
|
+
programs will run approximately twice as slow while highly recursive
|
624
|
+
programs (like the fibonacci series test) will run three times slower.</p>
|
618
625
|
|
619
626
|
<h2 id="label-License">License</h2>
|
620
627
|
|
@@ -623,10 +630,11 @@ fibonacci series test) will run three times slower.</p>
|
|
623
630
|
<h2 id="label-Development">Development</h2>
|
624
631
|
|
625
632
|
<p>Code is located at <a
|
626
|
-
href="
|
633
|
+
href="https://github.com/ruby-prof/ruby-prof">github.com/ruby-prof/ruby-prof</a></p>
|
627
634
|
|
628
635
|
<p>Google group/mailing list: <a
|
629
|
-
href="http://groups.google.com/group/ruby-optimization">groups.google.com/group/ruby-optimization</a
|
636
|
+
href="http://groups.google.com/group/ruby-optimization">groups.google.com/group/ruby-optimization</a>
|
637
|
+
or start a github issue.</p>
|
630
638
|
|
631
639
|
</div>
|
632
640
|
|
data/doc/js/search_index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
var search_data = {"index":{"searchIndex":["rack","rubyprof","rubyprof","abstractprinter","aggregatecallinfo","callinfo","callinfoprinter","callinfovisitor","callstackprinter","calltreeprinter","cmd","dotprinter","flatprinter","flatprinterwithlinenumbers","graphhtmlprinter","graphprinter","methodinfo","multiprinter","profile","profiletask","test","thread","<=>()","aggregate_children()","aggregate_parents()","application()","arguments()","call()","call_sequence()","called()","called()","children()","children()","children_time()","children_time()","children_time()","clean_output_directory()","color()","convert()","copy_image_files()","cpu_frequency()","cpu_frequency=()","create_link()","create_output_directory()","define()","detect_recursion()","dump()","eliminate!()","eliminate!()","eliminate_methods!()","exclude_threads()","exclude_threads=()","expansion()","figure_measure_mode()","file()","file_link()","find_call()","flat_profile()","format_profile_total()","graph_link()","graph_profile()","line()","link()","load_pre_execs()","load_pre_libs()","measure_allocations()","measure_cpu_time()","measure_gc_runs()","measure_gc_time()","measure_memory()","measure_mode()","measure_mode=()","measure_mode_name()","measure_process_time()","measure_wall_time()","merge_call_tree()","method_href()","method_href()","method_name()","min_depth()","min_percent()","name()","new()","new()","new()","new()","new()","new()","new()","new()","new()","option_parser()","output_dir()","output_directory()","parent()","parse_args()","pause()","pause()","paused?()","post_process()","print()","print()","print()","print()","print()","print()","print()","print_commands()","print_css()","print_file()","print_footer()","print_footer()","print_header()","print_header()","print_help()","print_java_script()","print_methods()","print_stack()","print_thread()","print_thread()","print_threads()","print_threads()","print_title_bar()","profile()","profile()","recursive?()","report_filename()","report_profile()","resume()","resume()","root?()","root?()","run()","run()","run_profile()","run_script()","run_test()","run_warmup()","running?()","running?()","self_time()","self_time()","setup_options()","setup_options()","setup_options()","sort_method()","sort_method()","stack()","stack_profile()","start()","start()","start_script()","stop()","stop()","sum()","target()","template()","threads()","threshold()","title()","to_s()","to_s()","to_s()","top_methods()","total_time()","total_time()","total_time()","total_time()","tree_profile()","visit()","visit_call_info()","wait_time()","wait_time()","license","readme","flat","graph"],"longSearchIndex":["rack","rack::rubyprof","rubyprof","rubyprof::abstractprinter","rubyprof::aggregatecallinfo","rubyprof::callinfo","rubyprof::callinfoprinter","rubyprof::callinfovisitor","rubyprof::callstackprinter","rubyprof::calltreeprinter","rubyprof::cmd","rubyprof::dotprinter","rubyprof::flatprinter","rubyprof::flatprinterwithlinenumbers","rubyprof::graphhtmlprinter","rubyprof::graphprinter","rubyprof::methodinfo","rubyprof::multiprinter","rubyprof::profile","rubyprof::profiletask","rubyprof::test","rubyprof::thread","rubyprof::methodinfo#<=>()","rubyprof::methodinfo#aggregate_children()","rubyprof::methodinfo#aggregate_parents()","rubyprof::callstackprinter#application()","rubyprof::callstackprinter#arguments()","rack::rubyprof#call()","rubyprof::callinfo#call_sequence()","rubyprof::aggregatecallinfo#called()","rubyprof::methodinfo#called()","rubyprof::aggregatecallinfo#children()","rubyprof::methodinfo#children()","rubyprof::aggregatecallinfo#children_time()","rubyprof::callinfo#children_time()","rubyprof::methodinfo#children_time()","rubyprof::profiletask#clean_output_directory()","rubyprof::callstackprinter#color()","rubyprof::calltreeprinter#convert()","rubyprof::callstackprinter#copy_image_files()","rubyprof::cpu_frequency()","rubyprof::cpu_frequency=()","rubyprof::graphhtmlprinter#create_link()","rubyprof::profiletask#create_output_directory()","rubyprof::profiletask#define()","rubyprof::profile#detect_recursion()","rubyprof::callstackprinter#dump()","rubyprof::callinfo#eliminate!()","rubyprof::methodinfo#eliminate!()","rubyprof::profile#eliminate_methods!()","rubyprof::exclude_threads()","rubyprof::exclude_threads=()","rubyprof::callstackprinter#expansion()","rubyprof::figure_measure_mode()","rubyprof::calltreeprinter#file()","rubyprof::graphhtmlprinter#file_link()","rubyprof::callinfo#find_call()","rubyprof::multiprinter#flat_profile()","rubyprof::test#format_profile_total()","rubyprof::callstackprinter#graph_link()","rubyprof::multiprinter#graph_profile()","rubyprof::aggregatecallinfo#line()","rubyprof::callstackprinter#link()","rubyprof::cmd#load_pre_execs()","rubyprof::cmd#load_pre_libs()","rubyprof::measure_allocations()","rubyprof::measure_cpu_time()","rubyprof::measure_gc_runs()","rubyprof::measure_gc_time()","rubyprof::measure_memory()","rubyprof::measure_mode()","rubyprof::measure_mode=()","rubyprof::test#measure_mode_name()","rubyprof::measure_process_time()","rubyprof::measure_wall_time()","rubyprof::callinfo#merge_call_tree()","rubyprof::callstackprinter#method_href()","rubyprof::graphhtmlprinter#method_href()","rubyprof::abstractprinter#method_name()","rubyprof::methodinfo#min_depth()","rubyprof::abstractprinter#min_percent()","rubyprof::callstackprinter#name()","rack::rubyprof::new()","rubyprof::abstractprinter::new()","rubyprof::aggregatecallinfo::new()","rubyprof::callinfovisitor::new()","rubyprof::cmd::new()","rubyprof::dotprinter::new()","rubyprof::multiprinter::new()","rubyprof::profile::new()","rubyprof::profiletask::new()","rubyprof::cmd#option_parser()","rubyprof::test#output_dir()","rubyprof::profiletask#output_directory()","rubyprof::aggregatecallinfo#parent()","rubyprof::cmd#parse_args()","rubyprof::pause()","rubyprof::profile#pause()","rubyprof::profile#paused?()","rubyprof::profile#post_process()","rack::rubyprof#print()","rubyprof::abstractprinter#print()","rubyprof::callstackprinter#print()","rubyprof::calltreeprinter#print()","rubyprof::dotprinter#print()","rubyprof::graphhtmlprinter#print()","rubyprof::multiprinter#print()","rubyprof::callstackprinter#print_commands()","rubyprof::callstackprinter#print_css()","rubyprof::abstractprinter#print_file()","rubyprof::abstractprinter#print_footer()","rubyprof::callstackprinter#print_footer()","rubyprof::abstractprinter#print_header()","rubyprof::callstackprinter#print_header()","rubyprof::callstackprinter#print_help()","rubyprof::callstackprinter#print_java_script()","rubyprof::flatprinterwithlinenumbers#print_methods()","rubyprof::callstackprinter#print_stack()","rubyprof::abstractprinter#print_thread()","rubyprof::calltreeprinter#print_thread()","rubyprof::abstractprinter#print_threads()","rubyprof::calltreeprinter#print_threads()","rubyprof::callstackprinter#print_title_bar()","rubyprof::profile()","rubyprof::profile::profile()","rubyprof::methodinfo#recursive?()","rubyprof::test#report_filename()","rubyprof::test#report_profile()","rubyprof::resume()","rubyprof::profile#resume()","rubyprof::callinfo#root?()","rubyprof::methodinfo#root?()","rubyprof::cmd#run()","rubyprof::test#run()","rubyprof::test#run_profile()","rubyprof::profiletask#run_script()","rubyprof::test#run_test()","rubyprof::test#run_warmup()","rubyprof::running?()","rubyprof::profile#running?()","rubyprof::aggregatecallinfo#self_time()","rubyprof::methodinfo#self_time()","rubyprof::abstractprinter#setup_options()","rubyprof::cmd#setup_options()","rubyprof::graphhtmlprinter#setup_options()","rubyprof::abstractprinter#sort_method()","rubyprof::flatprinter#sort_method()","rubyprof::callinfo#stack()","rubyprof::multiprinter#stack_profile()","rubyprof::start()","rubyprof::profile#start()","rubyprof::start_script()","rubyprof::stop()","rubyprof::profile#stop()","rubyprof::callstackprinter#sum()","rubyprof::aggregatecallinfo#target()","rubyprof::graphhtmlprinter#template()","rubyprof::profile#threads()","rubyprof::callstackprinter#threshold()","rubyprof::callstackprinter#title()","rubyprof::aggregatecallinfo#to_s()","rubyprof::callinfo#to_s()","rubyprof::methodinfo#to_s()","rubyprof::thread#top_methods()","rubyprof::aggregatecallinfo#total_time()","rubyprof::callstackprinter#total_time()","rubyprof::methodinfo#total_time()","rubyprof::thread#total_time()","rubyprof::multiprinter#tree_profile()","rubyprof::callinfovisitor#visit()","rubyprof::callinfovisitor#visit_call_info()","rubyprof::aggregatecallinfo#wait_time()","rubyprof::methodinfo#wait_time()","","","",""],"info":[["Rack","","Rack.html","",""],["Rack::RubyProf","","Rack/RubyProf.html","",""],["RubyProf","","RubyProf.html","","<p>The call info visitor class does a depth-first traversal across a thread’s\ncall stack. At each call_info …\n"],["RubyProf::AbstractPrinter","","RubyProf/AbstractPrinter.html","",""],["RubyProf::AggregateCallInfo","","RubyProf/AggregateCallInfo.html","",""],["RubyProf::CallInfo","","RubyProf/CallInfo.html","",""],["RubyProf::CallInfoPrinter","","RubyProf/CallInfoPrinter.html","","<p>Prints out the call graph based on CallInfo instances. This is mainly for\ndebugging purposes as it provides …\n"],["RubyProf::CallInfoVisitor","","RubyProf/CallInfoVisitor.html","",""],["RubyProf::CallStackPrinter","","RubyProf/CallStackPrinter.html","","<p>prints a HTML visualization of the call tree\n"],["RubyProf::CallTreePrinter","","RubyProf/CallTreePrinter.html","","<p>Generate profiling information in calltree format for use by kcachegrind\nand similar tools.\n"],["RubyProf::Cmd","","RubyProf/Cmd.html","",""],["RubyProf::DotPrinter","","RubyProf/DotPrinter.html","","<p>Generates a graphviz graph in dot format. To use the dot printer:\n\n<pre>result = RubyProf.profile do\n [code ...</pre>\n"],["RubyProf::FlatPrinter","","RubyProf/FlatPrinter.html","","<p>Generates flat profile reports as text. To use the flat printer:\n\n<pre>result = RubyProf.profile do\n [code ...</pre>\n"],["RubyProf::FlatPrinterWithLineNumbers","","RubyProf/FlatPrinterWithLineNumbers.html","","<p>Generates flat profile reports as text. To use the flat printer with line\nnumbers:\n\n<pre>result = RubyProf.profile ...</pre>\n"],["RubyProf::GraphHtmlPrinter","","RubyProf/GraphHtmlPrinter.html","","<p>Generates graph profile reports as html. To use the graph html printer:\n\n<pre>result = RubyProf.profile do\n ...</pre>\n"],["RubyProf::GraphPrinter","","RubyProf/GraphPrinter.html","","<p>Generates graph profile reports as text. To use the graph printer:\n\n<pre>result = RubyProf.profile do\n [code ...</pre>\n"],["RubyProf::MethodInfo","","RubyProf/MethodInfo.html","",""],["RubyProf::MultiPrinter","","RubyProf/MultiPrinter.html","","<p>Helper class to simplify printing profiles of several types from one\nprofiling run. Currently prints …\n"],["RubyProf::Profile","","RubyProf/Profile.html","",""],["RubyProf::ProfileTask","","RubyProf/ProfileTask.html","","<p>Define a task library for profiling unit tests with ruby-prof.\n<p>All of the options provided by the Rake: …\n"],["RubyProf::Test","","RubyProf/Test.html","",""],["RubyProf::Thread","","RubyProf/Thread.html","",""],["<=>","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-3C-3D-3E","(other)",""],["aggregate_children","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-aggregate_children","()",""],["aggregate_parents","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-aggregate_parents","()",""],["application","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-application","()",""],["arguments","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-arguments","()",""],["call","Rack::RubyProf","Rack/RubyProf.html#method-i-call","(env)",""],["call_sequence","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-call_sequence","()",""],["called","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-called","()",""],["called","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-called","()",""],["children","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-children","()",""],["children","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-children","()",""],["children_time","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-children_time","()",""],["children_time","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-children_time","()",""],["children_time","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-children_time","()",""],["clean_output_directory","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-clean_output_directory","()",""],["color","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-color","(p)",""],["convert","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-convert","(value)",""],["copy_image_files","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-copy_image_files","()",""],["cpu_frequency","RubyProf","RubyProf.html#method-c-cpu_frequency","()","<p>Measurements\n"],["cpu_frequency=","RubyProf","RubyProf.html#method-c-cpu_frequency-3D","(value)",""],["create_link","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-create_link","(thread, method)","<p>Creates a link to a method. Note that we do not create links to methods\nwhich are under the min_perecent …\n"],["create_output_directory","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-create_output_directory","()",""],["define","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-define","()","<p>Create the tasks defined by this task lib.\n"],["detect_recursion","RubyProf::Profile","RubyProf/Profile.html#method-i-detect_recursion","(thread)","<p>This method detect recursive calls in the call graph.\n"],["dump","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-dump","(ci)",""],["eliminate!","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-eliminate-21","()","<p>eliminate call info from the call tree. adds self and wait time to parent\nand attaches called methods …\n"],["eliminate!","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-eliminate-21","()","<p>remove method from the call graph. should not be called directly.\n"],["eliminate_methods!","RubyProf::Profile","RubyProf/Profile.html#method-i-eliminate_methods-21","(matchers)","<p>eliminate some calls from the graph by merging the information into\ncallers. matchers can be a list of …\n"],["exclude_threads","RubyProf","RubyProf.html#method-c-exclude_threads","()","<p>Returns threads ruby-prof should exclude from profiling\n"],["exclude_threads=","RubyProf","RubyProf.html#method-c-exclude_threads-3D","(value)","<p>Specifies what threads ruby-prof should exclude from profiling\n"],["expansion","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-expansion","()",""],["figure_measure_mode","RubyProf","RubyProf.html#method-c-figure_measure_mode","()","<p>Checks if the user specified the clock mode via the RUBY_PROF_MEASURE_MODE\nenvironment variable\n"],["file","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-file","(method)",""],["file_link","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-file_link","(path, linenum)",""],["find_call","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-find_call","(other)","<p>find a specific call in list of children. returns nil if not found. note:\nthere can’t be more than one …\n"],["flat_profile","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-flat_profile","()","<p>the name of the flat profile file\n"],["format_profile_total","RubyProf::Test","RubyProf/Test.html#method-i-format_profile_total","(total, measure_mode)",""],["graph_link","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-graph_link","(call_info)",""],["graph_profile","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-graph_profile","()","<p>the name of the graph profile file\n"],["line","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-line","()",""],["link","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-link","(call_info)",""],["load_pre_execs","RubyProf::Cmd","RubyProf/Cmd.html#method-i-load_pre_execs","()",""],["load_pre_libs","RubyProf::Cmd","RubyProf/Cmd.html#method-i-load_pre_libs","()",""],["measure_allocations","RubyProf","RubyProf.html#method-c-measure_allocations","()",""],["measure_cpu_time","RubyProf","RubyProf.html#method-c-measure_cpu_time","()",""],["measure_gc_runs","RubyProf","RubyProf.html#method-c-measure_gc_runs","()",""],["measure_gc_time","RubyProf","RubyProf.html#method-c-measure_gc_time","()",""],["measure_memory","RubyProf","RubyProf.html#method-c-measure_memory","()",""],["measure_mode","RubyProf","RubyProf.html#method-c-measure_mode","()","<p>Returns what ruby-prof is measuring. Valid values include:\n<p>*RubyProf::PROCESS_TIME - Measure process …\n"],["measure_mode=","RubyProf","RubyProf.html#method-c-measure_mode-3D","(value)","<p>Specifies what ruby-prof should measure. Valid values include:\n<p>*RubyProf::PROCESS_TIME - Measure process …\n"],["measure_mode_name","RubyProf::Test","RubyProf/Test.html#method-i-measure_mode_name","(measure_mode)",""],["measure_process_time","RubyProf","RubyProf.html#method-c-measure_process_time","()",""],["measure_wall_time","RubyProf","RubyProf.html#method-c-measure_wall_time","()",""],["merge_call_tree","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-merge_call_tree","(other)","<p>merge two call trees. adds self, wait, and total time of other to self and\nmerges children of other into …\n"],["method_href","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-method_href","(method)",""],["method_href","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-method_href","(thread, method)",""],["method_name","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-method_name","(method)",""],["min_depth","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-min_depth","()",""],["min_percent","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-min_percent","()",""],["name","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-name","(call_info)",""],["new","Rack::RubyProf","Rack/RubyProf.html#method-c-new","(app, options = {})",""],["new","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-c-new","(result)","<p>Create a new printer.\n<p>result should be the output generated from a profiling run\n"],["new","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-c-new","(call_infos)",""],["new","RubyProf::CallInfoVisitor","RubyProf/CallInfoVisitor.html#method-c-new","(thread)",""],["new","RubyProf::Cmd","RubyProf/Cmd.html#method-c-new","()",""],["new","RubyProf::DotPrinter","RubyProf/DotPrinter.html#method-c-new","(result)","<p>Creates the DotPrinter using a RubyProf::Result.\n"],["new","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-c-new","(result)",""],["new","RubyProf::Profile","RubyProf/Profile.html#method-c-new","(p1 = v1, p2 = v2)","<p>Returns a new profiler.\n<p>Parameters\n<p>mode — Measure mode (optional). Specifies the profile measure mode. …\n"],["new","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-c-new","(name = :profile)",""],["option_parser","RubyProf::Cmd","RubyProf/Cmd.html#method-i-option_parser","()",""],["output_dir","RubyProf::Test","RubyProf/Test.html#method-i-output_dir","()",""],["output_directory","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-output_directory","()",""],["parent","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-parent","()",""],["parse_args","RubyProf::Cmd","RubyProf/Cmd.html#method-i-parse_args","()",""],["pause","RubyProf","RubyProf.html#method-c-pause","()",""],["pause","RubyProf::Profile","RubyProf/Profile.html#method-i-pause","()","<p>Pauses collecting profile data.\n"],["paused?","RubyProf::Profile","RubyProf/Profile.html#method-i-paused-3F","()","<p>Returns whether a profile is currently paused.\n"],["post_process","RubyProf::Profile","RubyProf/Profile.html#method-i-post_process","()","<p>This method gets called once profiling has been completed but before\nresults are returned to the user. …\n"],["print","Rack::RubyProf","Rack/RubyProf.html#method-i-print","(data, path)",""],["print","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print","(output = STDOUT, options = {})","<p>Print a profiling report to the provided output.\n<p>output - Any IO object, including STDOUT or a file. …\n"],["print","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print","(output = STDOUT, options = {})","<p>Specify print options.\n<p>options - Hash table\n\n<pre>:min_percent - Number 0 to 100 that specifes the minimum\n ...</pre>\n"],["print","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-print","(output = STDOUT, options = {})","<p>Specify print options.\n<p>options - Hash table\n\n<pre>:min_percent - Number 0 to 100 that specifes the minimum\n ...</pre>\n"],["print","RubyProf::DotPrinter","RubyProf/DotPrinter.html#method-i-print","(output = STDOUT, options = {})","<p>Print a graph report to the provided output.\n<p>output - Any IO object, including STDOUT or a file. The default …\n"],["print","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-print","(output = STDOUT, options = {})",""],["print","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-print","(options)","<p>create profile files under options or the current directory. options is\nused as the base name for the …\n"],["print_commands","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_commands","()",""],["print_css","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_css","()",""],["print_file","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_file","()",""],["print_footer","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_footer","(thread)",""],["print_footer","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_footer","()",""],["print_header","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_header","(thread)",""],["print_header","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_header","()",""],["print_help","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_help","()",""],["print_java_script","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_java_script","()",""],["print_methods","RubyProf::FlatPrinterWithLineNumbers","RubyProf/FlatPrinterWithLineNumbers.html#method-i-print_methods","(thread)",""],["print_stack","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_stack","(call_info, parent_time)",""],["print_thread","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_thread","(thread)",""],["print_thread","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-print_thread","(thread)",""],["print_threads","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_threads","()",""],["print_threads","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-print_threads","()",""],["print_title_bar","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_title_bar","()",""],["profile","RubyProf","RubyProf.html#method-c-profile","(&block)","<p>Profile a block\n"],["profile","RubyProf::Profile","RubyProf/Profile.html#method-c-profile","(*args)","<p>Profiles the specified block and returns a RubyProf::Result object.\n"],["recursive?","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-recursive-3F","()",""],["report_filename","RubyProf::Test","RubyProf/Test.html#method-i-report_filename","(printer, measure_mode)","<p>The report filename is test_name + measure_mode + report_type\n"],["report_profile","RubyProf::Test","RubyProf/Test.html#method-i-report_profile","(data, measure_mode)",""],["resume","RubyProf","RubyProf.html#method-c-resume","()",""],["resume","RubyProf::Profile","RubyProf/Profile.html#method-i-resume","()","<p>Resumes recording profile data.\n"],["root?","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-root-3F","()",""],["root?","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-root-3F","()",""],["run","RubyProf::Cmd","RubyProf/Cmd.html#method-i-run","()",""],["run","RubyProf::Test","RubyProf/Test.html#method-i-run","(result)",""],["run_profile","RubyProf::Test","RubyProf/Test.html#method-i-run_profile","(measure_mode)",""],["run_script","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-run_script","(script_path)","<p>Run script\n"],["run_test","RubyProf::Test","RubyProf/Test.html#method-i-run_test","()",""],["run_warmup","RubyProf::Test","RubyProf/Test.html#method-i-run_warmup","()",""],["running?","RubyProf","RubyProf.html#method-c-running-3F","()",""],["running?","RubyProf::Profile","RubyProf/Profile.html#method-i-running-3F","()","<p>Returns whether a profile is currently running.\n"],["self_time","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-self_time","()",""],["self_time","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-self_time","()",""],["setup_options","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-setup_options","(options = {})","<p>Specify print options.\n<p>options - Hash table\n\n<pre>:min_percent - Number 0 to 100 that specifes the minimum\n ...</pre>\n"],["setup_options","RubyProf::Cmd","RubyProf/Cmd.html#method-i-setup_options","()",""],["setup_options","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-setup_options","(options)",""],["sort_method","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-sort_method","()",""],["sort_method","RubyProf::FlatPrinter","RubyProf/FlatPrinter.html#method-i-sort_method","()","<p>Override for this printer to sort by self time by default\n"],["stack","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-stack","()",""],["stack_profile","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-stack_profile","()","<p>the name of the call stack profile file\n"],["start","RubyProf","RubyProf.html#method-c-start","()",""],["start","RubyProf::Profile","RubyProf/Profile.html#method-i-start","()","<p>Starts recording profile data.\n"],["start_script","RubyProf","RubyProf.html#method-c-start_script","(script)","<p>Profiling\n"],["stop","RubyProf","RubyProf.html#method-c-stop","()",""],["stop","RubyProf::Profile","RubyProf/Profile.html#method-i-stop","()","<p>Stops collecting profile data.\n"],["sum","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-sum","(a)",""],["target","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-target","()",""],["template","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-template","()",""],["threads","RubyProf::Profile","RubyProf/Profile.html#method-i-threads","()","<p>Returns an array of RubyProf::Thread instances that were executed while the\nthe program was being run. …\n"],["threshold","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-threshold","()",""],["title","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-title","()",""],["to_s","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-to_s","()",""],["to_s","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-to_s","()",""],["to_s","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-to_s","()",""],["top_methods","RubyProf::Thread","RubyProf/Thread.html#method-i-top_methods","()",""],["total_time","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-total_time","()",""],["total_time","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-total_time","(call_infos)",""],["total_time","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-total_time","()",""],["total_time","RubyProf::Thread","RubyProf/Thread.html#method-i-total_time","()",""],["tree_profile","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-tree_profile","()","<p>the name of the callgrind profile file\n"],["visit","RubyProf::CallInfoVisitor","RubyProf/CallInfoVisitor.html#method-i-visit","(&block)",""],["visit_call_info","RubyProf::CallInfoVisitor","RubyProf/CallInfoVisitor.html#method-i-visit_call_info","(call_info)",""],["wait_time","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-wait_time","()",""],["wait_time","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-wait_time","()",""],["LICENSE","","LICENSE.html","","<p>Copyright (C) 2005 - 20011 Shugo Maeda <shugo@ruby-lang.org> and\nCharlie Savage <cfis@savagexi.com …\n"],["README","","README_rdoc.html","","<p>ruby-prof\n<p>Overview\n<p>ruby-prof is a fast code profiler for Ruby. Its features include:\n"],["flat","","examples/flat_txt.html","","<p>Flat Profiles\n<p>Flat profiles show the total amount of time spent in each method. As an\nexample, here is …\n"],["graph","","examples/graph_txt.html","","<p>Graph Profiles\n<p>Graph profiles show how long each method runs, which methods call it and\nwhich methods …\n"]]}}
|
1
|
+
var search_data = {"index":{"searchIndex":["rack","rubyprof","rubyprof","abstractprinter","aggregatecallinfo","callinfo","callinfoprinter","callinfovisitor","callstackprinter","calltreeprinter","cmd","dotprinter","flatprinter","flatprinterwithlinenumbers","graphhtmlprinter","graphprinter","methodinfo","multiprinter","profile","profiletask","test","thread","<=>()","aggregate_children()","aggregate_parents()","application()","arguments()","call()","call_sequence()","called()","called()","children()","children()","children_time()","children_time()","children_time()","clean_output_directory()","color()","convert()","copy_image_files()","cpu_frequency()","cpu_frequency=()","create_link()","create_output_directory()","define()","detect_recursion()","dump()","eliminate!()","eliminate!()","eliminate_methods!()","exclude_threads()","exclude_threads=()","expansion()","figure_measure_mode()","file()","file_link()","find_call()","flat_profile()","format_profile_total()","graph_link()","graph_profile()","line()","link()","load_pre_execs()","load_pre_libs()","measure_allocations()","measure_cpu_time()","measure_gc_runs()","measure_gc_time()","measure_memory()","measure_mode()","measure_mode=()","measure_mode_name()","measure_process_time()","measure_wall_time()","merge_call_tree()","method_href()","method_href()","method_name()","min_depth()","min_percent()","name()","new()","new()","new()","new()","new()","new()","new()","new()","new()","option_parser()","output_dir()","output_directory()","parent()","parse_args()","pause()","pause()","paused?()","post_process()","print()","print()","print()","print()","print()","print()","print()","print_commands()","print_css()","print_file()","print_footer()","print_footer()","print_header()","print_header()","print_help()","print_java_script()","print_methods()","print_stack()","print_thread()","print_thread()","print_threads()","print_threads()","print_title_bar()","profile()","profile()","recursive?()","report_filename()","report_profile()","resume()","resume()","root?()","root?()","run()","run()","run_profile()","run_script()","run_test()","run_warmup()","running?()","running?()","self_time()","self_time()","setup_options()","setup_options()","setup_options()","sort_method()","sort_method()","stack()","stack_profile()","start()","start()","start_script()","stop()","stop()","sum()","target()","template()","threads()","threshold()","title()","to_s()","to_s()","to_s()","top_methods()","total_time()","total_time()","total_time()","total_time()","tree_profile()","visit()","visit_call_info()","wait_time()","wait_time()","license","readme","flat","graph"],"longSearchIndex":["rack","rack::rubyprof","rubyprof","rubyprof::abstractprinter","rubyprof::aggregatecallinfo","rubyprof::callinfo","rubyprof::callinfoprinter","rubyprof::callinfovisitor","rubyprof::callstackprinter","rubyprof::calltreeprinter","rubyprof::cmd","rubyprof::dotprinter","rubyprof::flatprinter","rubyprof::flatprinterwithlinenumbers","rubyprof::graphhtmlprinter","rubyprof::graphprinter","rubyprof::methodinfo","rubyprof::multiprinter","rubyprof::profile","rubyprof::profiletask","rubyprof::test","rubyprof::thread","rubyprof::methodinfo#<=>()","rubyprof::methodinfo#aggregate_children()","rubyprof::methodinfo#aggregate_parents()","rubyprof::callstackprinter#application()","rubyprof::callstackprinter#arguments()","rack::rubyprof#call()","rubyprof::callinfo#call_sequence()","rubyprof::aggregatecallinfo#called()","rubyprof::methodinfo#called()","rubyprof::aggregatecallinfo#children()","rubyprof::methodinfo#children()","rubyprof::aggregatecallinfo#children_time()","rubyprof::callinfo#children_time()","rubyprof::methodinfo#children_time()","rubyprof::profiletask#clean_output_directory()","rubyprof::callstackprinter#color()","rubyprof::calltreeprinter#convert()","rubyprof::callstackprinter#copy_image_files()","rubyprof::cpu_frequency()","rubyprof::cpu_frequency=()","rubyprof::graphhtmlprinter#create_link()","rubyprof::profiletask#create_output_directory()","rubyprof::profiletask#define()","rubyprof::profile#detect_recursion()","rubyprof::callstackprinter#dump()","rubyprof::callinfo#eliminate!()","rubyprof::methodinfo#eliminate!()","rubyprof::profile#eliminate_methods!()","rubyprof::exclude_threads()","rubyprof::exclude_threads=()","rubyprof::callstackprinter#expansion()","rubyprof::figure_measure_mode()","rubyprof::calltreeprinter#file()","rubyprof::graphhtmlprinter#file_link()","rubyprof::callinfo#find_call()","rubyprof::multiprinter#flat_profile()","rubyprof::test#format_profile_total()","rubyprof::callstackprinter#graph_link()","rubyprof::multiprinter#graph_profile()","rubyprof::aggregatecallinfo#line()","rubyprof::callstackprinter#link()","rubyprof::cmd#load_pre_execs()","rubyprof::cmd#load_pre_libs()","rubyprof::measure_allocations()","rubyprof::measure_cpu_time()","rubyprof::measure_gc_runs()","rubyprof::measure_gc_time()","rubyprof::measure_memory()","rubyprof::measure_mode()","rubyprof::measure_mode=()","rubyprof::test#measure_mode_name()","rubyprof::measure_process_time()","rubyprof::measure_wall_time()","rubyprof::callinfo#merge_call_tree()","rubyprof::callstackprinter#method_href()","rubyprof::graphhtmlprinter#method_href()","rubyprof::abstractprinter#method_name()","rubyprof::methodinfo#min_depth()","rubyprof::abstractprinter#min_percent()","rubyprof::callstackprinter#name()","rack::rubyprof::new()","rubyprof::abstractprinter::new()","rubyprof::aggregatecallinfo::new()","rubyprof::callinfovisitor::new()","rubyprof::cmd::new()","rubyprof::dotprinter::new()","rubyprof::multiprinter::new()","rubyprof::profile::new()","rubyprof::profiletask::new()","rubyprof::cmd#option_parser()","rubyprof::test#output_dir()","rubyprof::profiletask#output_directory()","rubyprof::aggregatecallinfo#parent()","rubyprof::cmd#parse_args()","rubyprof::pause()","rubyprof::profile#pause()","rubyprof::profile#paused?()","rubyprof::profile#post_process()","rack::rubyprof#print()","rubyprof::abstractprinter#print()","rubyprof::callstackprinter#print()","rubyprof::calltreeprinter#print()","rubyprof::dotprinter#print()","rubyprof::graphhtmlprinter#print()","rubyprof::multiprinter#print()","rubyprof::callstackprinter#print_commands()","rubyprof::callstackprinter#print_css()","rubyprof::abstractprinter#print_file()","rubyprof::abstractprinter#print_footer()","rubyprof::callstackprinter#print_footer()","rubyprof::abstractprinter#print_header()","rubyprof::callstackprinter#print_header()","rubyprof::callstackprinter#print_help()","rubyprof::callstackprinter#print_java_script()","rubyprof::flatprinterwithlinenumbers#print_methods()","rubyprof::callstackprinter#print_stack()","rubyprof::abstractprinter#print_thread()","rubyprof::calltreeprinter#print_thread()","rubyprof::abstractprinter#print_threads()","rubyprof::calltreeprinter#print_threads()","rubyprof::callstackprinter#print_title_bar()","rubyprof::profile()","rubyprof::profile::profile()","rubyprof::methodinfo#recursive?()","rubyprof::test#report_filename()","rubyprof::test#report_profile()","rubyprof::resume()","rubyprof::profile#resume()","rubyprof::callinfo#root?()","rubyprof::methodinfo#root?()","rubyprof::cmd#run()","rubyprof::test#run()","rubyprof::test#run_profile()","rubyprof::profiletask#run_script()","rubyprof::test#run_test()","rubyprof::test#run_warmup()","rubyprof::running?()","rubyprof::profile#running?()","rubyprof::aggregatecallinfo#self_time()","rubyprof::methodinfo#self_time()","rubyprof::abstractprinter#setup_options()","rubyprof::cmd#setup_options()","rubyprof::graphhtmlprinter#setup_options()","rubyprof::abstractprinter#sort_method()","rubyprof::flatprinter#sort_method()","rubyprof::callinfo#stack()","rubyprof::multiprinter#stack_profile()","rubyprof::start()","rubyprof::profile#start()","rubyprof::start_script()","rubyprof::stop()","rubyprof::profile#stop()","rubyprof::callstackprinter#sum()","rubyprof::aggregatecallinfo#target()","rubyprof::graphhtmlprinter#template()","rubyprof::profile#threads()","rubyprof::callstackprinter#threshold()","rubyprof::callstackprinter#title()","rubyprof::aggregatecallinfo#to_s()","rubyprof::callinfo#to_s()","rubyprof::methodinfo#to_s()","rubyprof::thread#top_methods()","rubyprof::aggregatecallinfo#total_time()","rubyprof::callstackprinter#total_time()","rubyprof::methodinfo#total_time()","rubyprof::thread#total_time()","rubyprof::multiprinter#tree_profile()","rubyprof::callinfovisitor#visit()","rubyprof::callinfovisitor#visit_call_info()","rubyprof::aggregatecallinfo#wait_time()","rubyprof::methodinfo#wait_time()","","","",""],"info":[["Rack","","Rack.html","",""],["Rack::RubyProf","","Rack/RubyProf.html","",""],["RubyProf","","RubyProf.html","","<p>The call info visitor class does a depth-first traversal across a\nthread's call stack. At each …\n"],["RubyProf::AbstractPrinter","","RubyProf/AbstractPrinter.html","",""],["RubyProf::AggregateCallInfo","","RubyProf/AggregateCallInfo.html","",""],["RubyProf::CallInfo","","RubyProf/CallInfo.html","",""],["RubyProf::CallInfoPrinter","","RubyProf/CallInfoPrinter.html","","<p>Prints out the call graph based on CallInfo instances. This is mainly for\ndebugging purposes as it provides …\n"],["RubyProf::CallInfoVisitor","","RubyProf/CallInfoVisitor.html","",""],["RubyProf::CallStackPrinter","","RubyProf/CallStackPrinter.html","","<p>prints a HTML visualization of the call tree\n"],["RubyProf::CallTreePrinter","","RubyProf/CallTreePrinter.html","","<p>Generate profiling information in calltree format for use by kcachegrind\nand similar tools.\n"],["RubyProf::Cmd","","RubyProf/Cmd.html","",""],["RubyProf::DotPrinter","","RubyProf/DotPrinter.html","","<p>Generates a graphviz graph in dot format. To use the dot printer:\n\n<pre>result = RubyProf.profile do\n [code ...</pre>\n"],["RubyProf::FlatPrinter","","RubyProf/FlatPrinter.html","","<p>Generates flat profile reports as text. To use the flat printer:\n\n<pre>result = RubyProf.profile do\n [code ...</pre>\n"],["RubyProf::FlatPrinterWithLineNumbers","","RubyProf/FlatPrinterWithLineNumbers.html","","<p>Generates flat profile reports as text. To use the flat printer with line\nnumbers:\n\n<pre>result = RubyProf.profile ...</pre>\n"],["RubyProf::GraphHtmlPrinter","","RubyProf/GraphHtmlPrinter.html","","<p>Generates graph profile reports as html. To use the graph html printer:\n\n<pre>result = RubyProf.profile do\n ...</pre>\n"],["RubyProf::GraphPrinter","","RubyProf/GraphPrinter.html","","<p>Generates graph profile reports as text. To use the graph printer:\n\n<pre>result = RubyProf.profile do\n [code ...</pre>\n"],["RubyProf::MethodInfo","","RubyProf/MethodInfo.html","",""],["RubyProf::MultiPrinter","","RubyProf/MultiPrinter.html","","<p>Helper class to simplify printing profiles of several types from one\nprofiling run. Currently prints …\n"],["RubyProf::Profile","","RubyProf/Profile.html","",""],["RubyProf::ProfileTask","","RubyProf/ProfileTask.html","","<p>Define a task library for profiling unit tests with ruby-prof.\n<p>All of the options provided by the Rake: …\n"],["RubyProf::Test","","RubyProf/Test.html","",""],["RubyProf::Thread","","RubyProf/Thread.html","",""],["<=>","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-3C-3D-3E","(other)",""],["aggregate_children","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-aggregate_children","()",""],["aggregate_parents","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-aggregate_parents","()",""],["application","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-application","()",""],["arguments","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-arguments","()",""],["call","Rack::RubyProf","Rack/RubyProf.html#method-i-call","(env)",""],["call_sequence","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-call_sequence","()",""],["called","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-called","()",""],["called","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-called","()",""],["children","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-children","()",""],["children","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-children","()",""],["children_time","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-children_time","()",""],["children_time","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-children_time","()",""],["children_time","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-children_time","()",""],["clean_output_directory","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-clean_output_directory","()",""],["color","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-color","(p)",""],["convert","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-convert","(value)",""],["copy_image_files","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-copy_image_files","()",""],["cpu_frequency","RubyProf","RubyProf.html#method-c-cpu_frequency","()","<p>Measurements\n"],["cpu_frequency=","RubyProf","RubyProf.html#method-c-cpu_frequency-3D","(value)",""],["create_link","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-create_link","(thread, overall_time, method)","<p>Creates a link to a method. Note that we do not create links to methods\nwhich are under the min_perecent …\n"],["create_output_directory","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-create_output_directory","()",""],["define","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-define","()","<p>Create the tasks defined by this task lib.\n"],["detect_recursion","RubyProf::Profile","RubyProf/Profile.html#method-i-detect_recursion","(thread)","<p>This method detect recursive calls in the call graph.\n"],["dump","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-dump","(ci)",""],["eliminate!","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-eliminate-21","()","<p>eliminate call info from the call tree. adds self and wait time to parent\nand attaches called methods …\n"],["eliminate!","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-eliminate-21","()","<p>remove method from the call graph. should not be called directly.\n"],["eliminate_methods!","RubyProf::Profile","RubyProf/Profile.html#method-i-eliminate_methods-21","(matchers)","<p>eliminate some calls from the graph by merging the information into\ncallers. matchers can be a list of …\n"],["exclude_threads","RubyProf","RubyProf.html#method-c-exclude_threads","()","<p>Returns threads ruby-prof should exclude from profiling\n"],["exclude_threads=","RubyProf","RubyProf.html#method-c-exclude_threads-3D","(value)","<p>Specifies what threads ruby-prof should exclude from profiling\n"],["expansion","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-expansion","()",""],["figure_measure_mode","RubyProf","RubyProf.html#method-c-figure_measure_mode","()","<p>Checks if the user specified the clock mode via the RUBY_PROF_MEASURE_MODE\nenvironment variable\n"],["file","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-file","(method)",""],["file_link","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-file_link","(path, linenum)",""],["find_call","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-find_call","(other)","<p>find a specific call in list of children. returns nil if not found. note:\nthere can't be more than …\n"],["flat_profile","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-flat_profile","()","<p>the name of the flat profile file\n"],["format_profile_total","RubyProf::Test","RubyProf/Test.html#method-i-format_profile_total","(total, measure_mode)",""],["graph_link","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-graph_link","(call_info)",""],["graph_profile","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-graph_profile","()","<p>the name of the graph profile file\n"],["line","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-line","()",""],["link","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-link","(call_info)",""],["load_pre_execs","RubyProf::Cmd","RubyProf/Cmd.html#method-i-load_pre_execs","()",""],["load_pre_libs","RubyProf::Cmd","RubyProf/Cmd.html#method-i-load_pre_libs","()",""],["measure_allocations","RubyProf","RubyProf.html#method-c-measure_allocations","()",""],["measure_cpu_time","RubyProf","RubyProf.html#method-c-measure_cpu_time","()",""],["measure_gc_runs","RubyProf","RubyProf.html#method-c-measure_gc_runs","()",""],["measure_gc_time","RubyProf","RubyProf.html#method-c-measure_gc_time","()",""],["measure_memory","RubyProf","RubyProf.html#method-c-measure_memory","()",""],["measure_mode","RubyProf","RubyProf.html#method-c-measure_mode","()","<p>Returns what ruby-prof is measuring. Valid values include:\n<p>*RubyProf::PROCESS_TIME - Measure process …\n"],["measure_mode=","RubyProf","RubyProf.html#method-c-measure_mode-3D","(value)","<p>Specifies what ruby-prof should measure. Valid values include:\n<p>*RubyProf::PROCESS_TIME - Measure process …\n"],["measure_mode_name","RubyProf::Test","RubyProf/Test.html#method-i-measure_mode_name","(measure_mode)",""],["measure_process_time","RubyProf","RubyProf.html#method-c-measure_process_time","()",""],["measure_wall_time","RubyProf","RubyProf.html#method-c-measure_wall_time","()",""],["merge_call_tree","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-merge_call_tree","(other)","<p>merge two call trees. adds self, wait, and total time of other to self and\nmerges children of other into …\n"],["method_href","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-method_href","(method)",""],["method_href","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-method_href","(thread, method)",""],["method_name","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-method_name","(method)",""],["min_depth","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-min_depth","()",""],["min_percent","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-min_percent","()",""],["name","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-name","(call_info)",""],["new","Rack::RubyProf","Rack/RubyProf.html#method-c-new","(app, options = {})",""],["new","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-c-new","(result)","<p>Create a new printer.\n<p>result should be the output generated from a profiling run\n"],["new","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-c-new","(call_infos)",""],["new","RubyProf::CallInfoVisitor","RubyProf/CallInfoVisitor.html#method-c-new","(thread)",""],["new","RubyProf::Cmd","RubyProf/Cmd.html#method-c-new","()",""],["new","RubyProf::DotPrinter","RubyProf/DotPrinter.html#method-c-new","(result)","<p>Creates the DotPrinter using a RubyProf::Result.\n"],["new","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-c-new","(result)",""],["new","RubyProf::Profile","RubyProf/Profile.html#method-c-new","(p1 = v1, p2 = v2)","<p>Returns a new profiler.\n<p>Parameters\n<p>mode — Measure mode (optional). Specifies the profile measure mode. …\n"],["new","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-c-new","(name = :profile)",""],["option_parser","RubyProf::Cmd","RubyProf/Cmd.html#method-i-option_parser","()",""],["output_dir","RubyProf::Test","RubyProf/Test.html#method-i-output_dir","()",""],["output_directory","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-output_directory","()",""],["parent","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-parent","()",""],["parse_args","RubyProf::Cmd","RubyProf/Cmd.html#method-i-parse_args","()",""],["pause","RubyProf","RubyProf.html#method-c-pause","()",""],["pause","RubyProf::Profile","RubyProf/Profile.html#method-i-pause","()","<p>Pauses collecting profile data.\n"],["paused?","RubyProf::Profile","RubyProf/Profile.html#method-i-paused-3F","()","<p>Returns whether a profile is currently paused.\n"],["post_process","RubyProf::Profile","RubyProf/Profile.html#method-i-post_process","()","<p>This method gets called once profiling has been completed but before\nresults are returned to the user. …\n"],["print","Rack::RubyProf","Rack/RubyProf.html#method-i-print","(data, path)",""],["print","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print","(output = STDOUT, options = {})","<p>Print a profiling report to the provided output.\n<p>output - Any IO object, including STDOUT or a file. …\n"],["print","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print","(output = STDOUT, options = {})","<p>Specify print options.\n<p>options - Hash table\n\n<pre>:min_percent - Number 0 to 100 that specifes the minimum\n ...</pre>\n"],["print","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-print","(output = STDOUT, options = {})","<p>Specify print options.\n<p>options - Hash table\n\n<pre>:min_percent - Number 0 to 100 that specifes the minimum\n ...</pre>\n"],["print","RubyProf::DotPrinter","RubyProf/DotPrinter.html#method-i-print","(output = STDOUT, options = {})","<p>Print a graph report to the provided output.\n<p>output - Any IO object, including STDOUT or a file. The default …\n"],["print","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-print","(output = STDOUT, options = {})",""],["print","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-print","(options)","<p>create profile files under options or the current directory. options is\nused as the base name for the …\n"],["print_commands","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_commands","()",""],["print_css","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_css","()",""],["print_file","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_file","()",""],["print_footer","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_footer","(thread)",""],["print_footer","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_footer","()",""],["print_header","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_header","(thread)",""],["print_header","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_header","()",""],["print_help","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_help","()",""],["print_java_script","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_java_script","()",""],["print_methods","RubyProf::FlatPrinterWithLineNumbers","RubyProf/FlatPrinterWithLineNumbers.html#method-i-print_methods","(thread)",""],["print_stack","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_stack","(call_info, parent_time)",""],["print_thread","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_thread","(thread)",""],["print_thread","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-print_thread","(thread)",""],["print_threads","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-print_threads","()",""],["print_threads","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-print_threads","()",""],["print_title_bar","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-print_title_bar","()",""],["profile","RubyProf","RubyProf.html#method-c-profile","(&block)","<p>Profile a block\n"],["profile","RubyProf::Profile","RubyProf/Profile.html#method-c-profile","(*args)","<p>Profiles the specified block and returns a RubyProf::Result object.\n"],["recursive?","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-recursive-3F","()",""],["report_filename","RubyProf::Test","RubyProf/Test.html#method-i-report_filename","(printer, measure_mode)","<p>The report filename is test_name + measure_mode + report_type\n"],["report_profile","RubyProf::Test","RubyProf/Test.html#method-i-report_profile","(data, measure_mode)",""],["resume","RubyProf","RubyProf.html#method-c-resume","()",""],["resume","RubyProf::Profile","RubyProf/Profile.html#method-i-resume","()","<p>Resumes recording profile data.\n"],["root?","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-root-3F","()",""],["root?","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-root-3F","()",""],["run","RubyProf::Cmd","RubyProf/Cmd.html#method-i-run","()",""],["run","RubyProf::Test","RubyProf/Test.html#method-i-run","(result)",""],["run_profile","RubyProf::Test","RubyProf/Test.html#method-i-run_profile","(measure_mode)",""],["run_script","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-run_script","(script_path)","<p>Run script\n"],["run_test","RubyProf::Test","RubyProf/Test.html#method-i-run_test","()",""],["run_warmup","RubyProf::Test","RubyProf/Test.html#method-i-run_warmup","()",""],["running?","RubyProf","RubyProf.html#method-c-running-3F","()",""],["running?","RubyProf::Profile","RubyProf/Profile.html#method-i-running-3F","()","<p>Returns whether a profile is currently running.\n"],["self_time","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-self_time","()",""],["self_time","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-self_time","()",""],["setup_options","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-setup_options","(options = {})","<p>Specify print options.\n<p>options - Hash table\n\n<pre>:min_percent - Number 0 to 100 that specifes the minimum\n ...</pre>\n"],["setup_options","RubyProf::Cmd","RubyProf/Cmd.html#method-i-setup_options","()",""],["setup_options","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-setup_options","(options)",""],["sort_method","RubyProf::AbstractPrinter","RubyProf/AbstractPrinter.html#method-i-sort_method","()",""],["sort_method","RubyProf::FlatPrinter","RubyProf/FlatPrinter.html#method-i-sort_method","()","<p>Override for this printer to sort by self time by default\n"],["stack","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-stack","()",""],["stack_profile","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-stack_profile","()","<p>the name of the call stack profile file\n"],["start","RubyProf","RubyProf.html#method-c-start","()",""],["start","RubyProf::Profile","RubyProf/Profile.html#method-i-start","()","<p>Starts recording profile data.\n"],["start_script","RubyProf","RubyProf.html#method-c-start_script","(script)","<p>Profiling\n"],["stop","RubyProf","RubyProf.html#method-c-stop","()",""],["stop","RubyProf::Profile","RubyProf/Profile.html#method-i-stop","()","<p>Stops collecting profile data.\n"],["sum","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-sum","(a)",""],["target","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-target","()",""],["template","RubyProf::GraphHtmlPrinter","RubyProf/GraphHtmlPrinter.html#method-i-template","()",""],["threads","RubyProf::Profile","RubyProf/Profile.html#method-i-threads","()","<p>Returns an array of RubyProf::Thread instances that were executed while the\nthe program was being run. …\n"],["threshold","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-threshold","()",""],["title","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-title","()",""],["to_s","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-to_s","()",""],["to_s","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-to_s","()",""],["to_s","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-to_s","()",""],["top_methods","RubyProf::Thread","RubyProf/Thread.html#method-i-top_methods","()",""],["total_time","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-total_time","()",""],["total_time","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-total_time","(call_infos)",""],["total_time","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-total_time","()",""],["total_time","RubyProf::Thread","RubyProf/Thread.html#method-i-total_time","()",""],["tree_profile","RubyProf::MultiPrinter","RubyProf/MultiPrinter.html#method-i-tree_profile","()","<p>the name of the callgrind profile file\n"],["visit","RubyProf::CallInfoVisitor","RubyProf/CallInfoVisitor.html#method-i-visit","(&block)",""],["visit_call_info","RubyProf::CallInfoVisitor","RubyProf/CallInfoVisitor.html#method-i-visit_call_info","(call_info)",""],["wait_time","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-wait_time","()",""],["wait_time","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-wait_time","()",""],["LICENSE","","LICENSE.html","","<p>Copyright (C) 2005 - 20011 Shugo Maeda <shugo@ruby-lang.org> and\nCharlie Savage <cfis@savagexi.com …\n"],["README","","README_rdoc.html","","<p>ruby-prof\n<p><img src=\"https://travis-ci.org/ruby-prof/ruby-prof.png?branch=master\"\nalt=\"Build Status\" /> …\n"],["flat","","examples/flat_txt.html","","<p>Flat Profiles\n<p>Flat profiles show the total amount of time spent in each method. As an\nexample, here is …\n"],["graph","","examples/graph_txt.html","","<p>Graph Profiles\n<p>Graph profiles show how long each method runs, which methods call it and\nwhich methods …\n"]]}}
|
data/ext/ruby_prof/extconf.rb
CHANGED
@@ -41,7 +41,7 @@ end
|
|
41
41
|
# end
|
42
42
|
|
43
43
|
require 'rubygems'
|
44
|
-
unless Gem.win_platform? || RUBY_PLATFORM =~ /darwin/
|
44
|
+
unless Gem.win_platform? || RUBY_PLATFORM =~ /(darwin|openbsd)/
|
45
45
|
$LDFLAGS += " -lrt" # for clock_gettime
|
46
46
|
end
|
47
47
|
add_define("RUBY_VERSION", RUBY_VERSION.gsub('.', ''))
|
data/ext/ruby_prof/version.h
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/* Copyright (C) 2005-2013 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
|
2
2
|
Please see the LICENSE file for copyright and distribution information */
|
3
3
|
|
4
|
-
#define RUBY_PROF_VERSION "0.13.
|
4
|
+
#define RUBY_PROF_VERSION "0.13.1" // as a string, for easy parsing from rake files
|
5
5
|
#define RUBY_PROF_VERSION_MAJ 0
|
6
6
|
#define RUBY_PROF_VERSION_MIN 13
|
7
|
-
#define RUBY_PROF_VERSION_MIC
|
7
|
+
#define RUBY_PROF_VERSION_MIC 1
|
@@ -47,8 +47,7 @@ module RubyProf
|
|
47
47
|
# links to methods which are under the min_perecent
|
48
48
|
# specified by the user, since they will not be
|
49
49
|
# printed out.
|
50
|
-
def create_link(thread, method)
|
51
|
-
overall_time = thread.total_time
|
50
|
+
def create_link(thread, overall_time, method)
|
52
51
|
total_percent = (method.total_time/overall_time) * 100
|
53
52
|
if total_percent < min_percent
|
54
53
|
# Just return name
|
@@ -200,7 +199,7 @@ module RubyProf
|
|
200
199
|
<td><%= sprintf("%#{TIME_WIDTH}.2f", caller.children_time) %></td>
|
201
200
|
<% called = "#{caller.called}/#{method.called}" %>
|
202
201
|
<td><%= sprintf("%#{CALL_WIDTH}s", called) %></td>
|
203
|
-
<td class="method_name"><%= create_link(thread, caller.parent.target) %></td>
|
202
|
+
<td class="method_name"><%= create_link(thread, total_time, caller.parent.target) %></td>
|
204
203
|
<td><%= file_link(caller.parent.target.source_file, caller.line) %></td>
|
205
204
|
</tr>
|
206
205
|
<% end %>
|
@@ -233,7 +232,7 @@ module RubyProf
|
|
233
232
|
<td><%= sprintf("%#{TIME_WIDTH}.2f", callee.children_time) %></td>
|
234
233
|
<% called = "#{callee.called}/#{callee.target.called}" %>
|
235
234
|
<td><%= sprintf("%#{CALL_WIDTH}s", called) %></td>
|
236
|
-
<td class="method_name"><%= create_link(thread, callee.target) %></td>
|
235
|
+
<td class="method_name"><%= create_link(thread, total_time, callee.target) %></td>
|
237
236
|
<td><%= file_link(method.source_file, callee.line) %></td>
|
238
237
|
</tr>
|
239
238
|
<% end %>
|
data/ruby-prof.gemspec
CHANGED
@@ -11,7 +11,7 @@ RUBY_PROF_VERSION = "#{match[1]}"
|
|
11
11
|
Gem::Specification.new do |spec|
|
12
12
|
spec.name = "ruby-prof"
|
13
13
|
|
14
|
-
spec.homepage = "
|
14
|
+
spec.homepage = "https://github.com/ruby-prof/ruby-prof/"
|
15
15
|
spec.summary = "Fast Ruby profiler"
|
16
16
|
spec.description = <<-EOF
|
17
17
|
ruby-prof is a fast code profiler for Ruby. It is a C extension and
|
@@ -55,7 +55,7 @@ EOF
|
|
55
55
|
spec.required_ruby_version = '>= 1.8.7'
|
56
56
|
spec.date = Time.now.strftime('%Y-%m-%d')
|
57
57
|
spec.homepage = 'https://github.com/rdp/ruby-prof'
|
58
|
-
spec.add_development_dependency('minitest')
|
58
|
+
spec.add_development_dependency('minitest', '~> 4.0')
|
59
59
|
spec.add_development_dependency('rake-compiler')
|
60
60
|
spec.add_development_dependency('rdoc')
|
61
61
|
end
|
data/test/multi_printer_test.rb
CHANGED
@@ -57,8 +57,9 @@ class MultiPrinterTest < Test::Unit::TestCase
|
|
57
57
|
\s*
|
58
58
|
\s*</table>')
|
59
59
|
assert_match(re, graph)
|
60
|
+
graph =~ re
|
60
61
|
display_time = $4.to_f
|
61
|
-
assert_in_delta expected_time, display_time, 0.
|
62
|
+
assert_in_delta expected_time, display_time, 0.001
|
62
63
|
end
|
63
64
|
|
64
65
|
private
|
data/test/stack_printer_test.rb
CHANGED
@@ -43,9 +43,11 @@ class StackPrinterTest < Test::Unit::TestCase
|
|
43
43
|
file_contents = nil
|
44
44
|
assert_nothing_raised { file_contents = print(result) }
|
45
45
|
# TODO: why are thread ids negative on travis-ci.org (32 bit build maybe?)
|
46
|
-
|
46
|
+
re = /Thread: (-?\d+)(, Fiber: (-?\d+))? \(100\.00% ~ ([\.0-9]+)\)/
|
47
|
+
assert_match(re, file_contents)
|
48
|
+
file_contents =~ re
|
47
49
|
actual_time = $4.to_f
|
48
|
-
assert_in_delta(expected_time, actual_time, 0.
|
50
|
+
assert_in_delta(expected_time, actual_time, 0.1)
|
49
51
|
end
|
50
52
|
|
51
53
|
def test_method_elimination
|
metadata
CHANGED
@@ -1,77 +1,64 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-prof
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.13.0
|
4
|
+
version: 0.13.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Shugo Maeda, Charlie Savage, Roger Pack, Stefan Kaes
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: minitest
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
16
|
requirements:
|
18
|
-
- -
|
17
|
+
- - ~>
|
19
18
|
- !ruby/object:Gem::Version
|
20
|
-
version: '0'
|
21
|
-
none: false
|
19
|
+
version: '4.0'
|
22
20
|
type: :development
|
21
|
+
prerelease: false
|
23
22
|
version_requirements: !ruby/object:Gem::Requirement
|
24
23
|
requirements:
|
25
|
-
- -
|
24
|
+
- - ~>
|
26
25
|
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
28
|
-
none: false
|
29
|
-
prerelease: false
|
26
|
+
version: '4.0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake-compiler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
30
|
requirements:
|
34
|
-
- -
|
31
|
+
- - '>='
|
35
32
|
- !ruby/object:Gem::Version
|
36
33
|
version: '0'
|
37
|
-
none: false
|
38
34
|
type: :development
|
35
|
+
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- -
|
38
|
+
- - '>='
|
42
39
|
- !ruby/object:Gem::Version
|
43
40
|
version: '0'
|
44
|
-
none: false
|
45
|
-
prerelease: false
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rdoc
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
44
|
requirements:
|
50
|
-
- -
|
45
|
+
- - '>='
|
51
46
|
- !ruby/object:Gem::Version
|
52
47
|
version: '0'
|
53
|
-
none: false
|
54
48
|
type: :development
|
49
|
+
prerelease: false
|
55
50
|
version_requirements: !ruby/object:Gem::Requirement
|
56
51
|
requirements:
|
57
|
-
- -
|
52
|
+
- - '>='
|
58
53
|
- !ruby/object:Gem::Version
|
59
54
|
version: '0'
|
60
|
-
|
61
|
-
|
62
|
-
description: ! 'ruby-prof is a fast code profiler for Ruby. It is a C extension and
|
63
|
-
|
55
|
+
description: |
|
56
|
+
ruby-prof is a fast code profiler for Ruby. It is a C extension and
|
64
57
|
therefore is many times faster than the standard Ruby profiler. It
|
65
|
-
|
66
58
|
supports both flat and graph profiles. For each method, graph profiles
|
67
|
-
|
68
59
|
show how long the method ran, which methods called it and which
|
69
|
-
|
70
60
|
methods it called. RubyProf generate both text and html and can output
|
71
|
-
|
72
61
|
it to standard out or to a file.
|
73
|
-
|
74
|
-
'
|
75
62
|
email: shugo@ruby-lang.org, cfis@savagexi.com, rogerdpack@gmail.com, skaes@railsexpress.de
|
76
63
|
executables:
|
77
64
|
- ruby-prof
|
@@ -245,30 +232,26 @@ files:
|
|
245
232
|
- test/unique_call_path_test.rb
|
246
233
|
homepage: https://github.com/rdp/ruby-prof
|
247
234
|
licenses: []
|
235
|
+
metadata: {}
|
248
236
|
post_install_message:
|
249
237
|
rdoc_options: []
|
250
238
|
require_paths:
|
251
239
|
- lib
|
252
240
|
required_ruby_version: !ruby/object:Gem::Requirement
|
253
241
|
requirements:
|
254
|
-
- -
|
242
|
+
- - '>='
|
255
243
|
- !ruby/object:Gem::Version
|
256
244
|
version: 1.8.7
|
257
|
-
none: false
|
258
245
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
259
246
|
requirements:
|
260
|
-
- -
|
247
|
+
- - '>='
|
261
248
|
- !ruby/object:Gem::Version
|
262
|
-
segments:
|
263
|
-
- 0
|
264
|
-
hash: -3655921953818653003
|
265
249
|
version: '0'
|
266
|
-
none: false
|
267
250
|
requirements: []
|
268
251
|
rubyforge_project:
|
269
|
-
rubygems_version: 1.
|
252
|
+
rubygems_version: 2.1.11
|
270
253
|
signing_key:
|
271
|
-
specification_version:
|
254
|
+
specification_version: 4
|
272
255
|
summary: Fast Ruby profiler
|
273
256
|
test_files:
|
274
257
|
- test/test_helper.rb
|