ruby-prof 0.13.0 → 0.13.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|