ruby-prof 0.15.6 → 0.15.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES +4 -0
- data/README.rdoc +8 -4
- data/doc/README_rdoc.html +8 -8
- data/doc/RubyProf/CallStackPrinter.html +91 -574
- data/doc/created.rid +4 -4
- data/doc/index.html +8 -8
- data/doc/js/search_index.js +1 -1
- data/doc/js/search_index.js.gz +0 -0
- data/doc/table_of_contents.html +72 -67
- data/lib/ruby-prof/printers/call_stack_printer.rb +29 -542
- data/lib/ruby-prof/version.rb +1 -1
- metadata +3 -6
- data/lib/ruby-prof/images/empty.png +0 -0
- data/lib/ruby-prof/images/minus.png +0 -0
- data/lib/ruby-prof/images/plus.png +0 -0
data/doc/created.rid
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
Thu, 23 Apr 2015 12:24:19 +0200
|
2
2
|
bin/ruby-prof Sun, 22 Feb 2015 15:41:38 +0100
|
3
3
|
bin/ruby-prof-check-trace Sun, 10 Mar 2013 10:57:14 +0100
|
4
4
|
examples/flat.txt Tue, 29 Jan 2013 16:43:39 +0100
|
@@ -12,7 +12,7 @@ lib/ruby-prof/compatibility.rb Sat, 14 Feb 2015 13:02:38 +0100
|
|
12
12
|
lib/ruby-prof/method_info.rb Sun, 22 Feb 2015 16:10:12 +0100
|
13
13
|
lib/ruby-prof/printers/abstract_printer.rb Tue, 29 Jan 2013 16:43:39 +0100
|
14
14
|
lib/ruby-prof/printers/call_info_printer.rb Sun, 22 Feb 2015 16:10:12 +0100
|
15
|
-
lib/ruby-prof/printers/call_stack_printer.rb
|
15
|
+
lib/ruby-prof/printers/call_stack_printer.rb Thu, 23 Apr 2015 12:17:56 +0200
|
16
16
|
lib/ruby-prof/printers/call_tree_printer.rb Tue, 29 Jan 2013 16:43:39 +0100
|
17
17
|
lib/ruby-prof/printers/dot_printer.rb Sun, 22 Feb 2015 16:10:12 +0100
|
18
18
|
lib/ruby-prof/printers/flat_printer.rb Sat, 14 Feb 2015 12:40:53 +0100
|
@@ -24,8 +24,8 @@ lib/ruby-prof/profile.rb Sun, 22 Feb 2015 16:10:12 +0100
|
|
24
24
|
lib/ruby-prof/rack.rb Thu, 23 Oct 2014 01:29:30 +0200
|
25
25
|
lib/ruby-prof/task.rb Tue, 29 Jan 2013 16:43:39 +0100
|
26
26
|
lib/ruby-prof/thread.rb Sun, 22 Feb 2015 16:10:12 +0100
|
27
|
-
lib/ruby-prof/version.rb
|
27
|
+
lib/ruby-prof/version.rb Thu, 23 Apr 2015 12:21:05 +0200
|
28
28
|
lib/unprof.rb Tue, 29 Jan 2013 16:43:39 +0100
|
29
29
|
ext/ruby_prof/ruby_prof.c Sat, 14 Feb 2015 12:36:01 +0100
|
30
|
-
README.rdoc
|
30
|
+
README.rdoc Thu, 23 Apr 2015 12:17:56 +0200
|
31
31
|
LICENSE Tue, 20 May 2014 07:16:27 +0200
|
data/doc/index.html
CHANGED
@@ -162,7 +162,10 @@ href="README_rdoc.html">README</a>.</p>
|
|
162
162
|
|
163
163
|
<h2 id="label-Requirements">Requirements<span><a href="#label-Requirements">¶</a> <a href="#top">↑</a></span></h2>
|
164
164
|
|
165
|
-
<p>ruby-prof requires Ruby 1.9.3 or higher
|
165
|
+
<p>ruby-prof requires Ruby 1.9.3 or higher. Please note some ruby releases
|
166
|
+
have known bugs which cause ruby-prof problems, like incorrect
|
167
|
+
measurements. We suggest to use the latest minor patch level release if
|
168
|
+
possible. In particular, on the 2.1 branch of ruby you should use 2.1.5.</p>
|
166
169
|
|
167
170
|
<p>If you are running Linux or Unix you'll need a C compiler so the
|
168
171
|
extension can be compiled when it is installed.</p>
|
@@ -296,19 +299,16 @@ gem's bin/xxx command to load, you may want to also measure
|
|
296
299
|
rubygems' startup penalty. You can do this by calling into
|
297
300
|
bin/ruby-prof directly, ex:</p>
|
298
301
|
|
299
|
-
<
|
300
|
-
|
301
|
-
<pre>g:/192/lib/ruby/gems/1.9.1/gems/ruby-prof-0.10.2/lib/ruby-prof.rb</pre>
|
302
|
+
<pre>$ gem which ruby-prof
|
303
|
+
g:/192/lib/ruby/gems/1.9.1/gems/ruby-prof-0.10.2/lib/ruby-prof.rb</pre>
|
302
304
|
|
303
305
|
<p>now run it thus (substitute lib/ruby-prof.rb with bin/ruby-prof):</p>
|
304
306
|
|
305
|
-
<
|
306
|
-
g:192binsome_installed_gem_command</p>
|
307
|
+
<pre>$ ruby g:/192/lib/ruby/gems/1.9.1/gems/ruby-prof-0.10.2/bin/ruby-prof g:\192\bin\some_installed_gem_command</pre>
|
307
308
|
|
308
309
|
<p>or</p>
|
309
310
|
|
310
|
-
<
|
311
|
-
./some_file_that_does_a_require_rubygems_at_the_beginning.rb</p>
|
311
|
+
<pre>$ ruby g:/192/lib/ruby/gems/1.9.1/gems/ruby-prof-0.10.2/bin/ruby-prof ./some_file_that_does_a_require_rubygems_at_the_beginning.rb</pre>
|
312
312
|
|
313
313
|
<h2 id="label-Profiling+Rails">Profiling Rails<span><a href="#label-Profiling+Rails">¶</a> <a href="#top">↑</a></span></h2>
|
314
314
|
|
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","thread","<=>()","aggregate_children()","aggregate_parents()","application()","arguments()","call()","call_sequence()","called()","called()","children()","children()","children_time()","children_time()","children_time()","clean_output_directory()","clear_cached_values_which_depend_on_recursiveness()","color()","convert()","copy_image_files()","cpu_frequency()","create_link()","create_output_directory()","define()","descendent_of()","detect_recursion()","detect_recursion()","detect_recursion()","dump()","eliminate!()","eliminate!()","eliminate_methods!()","exclude_threads()","exclude_threads=()","expansion()","figure_measure_mode()","file()","file_link()","find_call()","flat_profile()","graph_link()","graph_profile()","inspect()","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_string()","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()","non_recursive()","non_recursive?()","non_recursive?()","option_parser()","output_directory()","parent()","parents()","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()","recalc_recursion()","recalc_recursion()","recalc_recursion()","recursive?()","resume()","resume()","root?()","root?()","roots_of()","run()","run_script()","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_call_infos()","top_methods()","total_time()","total_time()","total_time()","total_time()","tree_profile()","visit()","wait_time()","wait_time()","license","readme","flat","graph.html","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::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::methodinfo#clear_cached_values_which_depend_on_recursiveness()","rubyprof::callstackprinter#color()","rubyprof::calltreeprinter#convert()","rubyprof::callstackprinter#copy_image_files()","rubyprof::cpu_frequency()","rubyprof::graphhtmlprinter#create_link()","rubyprof::profiletask#create_output_directory()","rubyprof::profiletask#define()","rubyprof::callinfo#descendent_of()","rubyprof::callinfo#detect_recursion()","rubyprof::methodinfo#detect_recursion()","rubyprof::thread#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::callstackprinter#graph_link()","rubyprof::multiprinter#graph_profile()","rubyprof::callinfo#inspect()","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::measure_mode_string()","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::methodinfo#non_recursive()","rubyprof::callinfo#non_recursive?()","rubyprof::methodinfo#non_recursive?()","rubyprof::cmd#option_parser()","rubyprof::profiletask#output_directory()","rubyprof::aggregatecallinfo#parent()","rubyprof::methodinfo#parents()","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::callinfo#recalc_recursion()","rubyprof::methodinfo#recalc_recursion()","rubyprof::thread#recalc_recursion()","rubyprof::methodinfo#recursive?()","rubyprof::resume()","rubyprof::profile#resume()","rubyprof::callinfo#root?()","rubyprof::methodinfo#root?()","rubyprof::callinfo::roots_of()","rubyprof::cmd#run()","rubyprof::profiletask#run_script()","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_call_infos()","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::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 list of\nmethod infos. 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:TestTask …\n"],["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","()",""],["clear_cached_values_which_depend_on_recursiveness","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-clear_cached_values_which_depend_on_recursiveness","()",""],["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"],["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"],["descendent_of","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-descendent_of","(other)",""],["detect_recursion","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-detect_recursion","(visited_methods = Hash.new(0))",""],["detect_recursion","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-detect_recursion","()",""],["detect_recursion","RubyProf::Thread","RubyProf/Thread.html#method-i-detect_recursion","()","<p>This method detect recursive calls in the call tree of a given thread It\nshould be called only once for …\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"],["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"],["inspect","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-inspect","()",""],["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_string","RubyProf","RubyProf.html#method-c-measure_mode_string","()",""],["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","(call_infos)",""],["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)",""],["non_recursive","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-non_recursive","()",""],["non_recursive?","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-non_recursive-3F","()",""],["non_recursive?","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-non_recursive-3F","()",""],["option_parser","RubyProf::Cmd","RubyProf/Cmd.html#method-i-option_parser","()",""],["output_directory","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-output_directory","()",""],["parent","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-parent","()",""],["parents","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-parents","()",""],["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"],["recalc_recursion","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-recalc_recursion","(visited_methods = Hash.new(0))",""],["recalc_recursion","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-recalc_recursion","()",""],["recalc_recursion","RubyProf::Thread","RubyProf/Thread.html#method-i-recalc_recursion","()",""],["recursive?","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-recursive-3F","()",""],["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","()",""],["roots_of","RubyProf::CallInfo","RubyProf/CallInfo.html#method-c-roots_of","(call_infos)",""],["run","RubyProf::Cmd","RubyProf/Cmd.html#method-i-run","()",""],["run_script","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-run_script","(script_path)","<p>Run script\n"],["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_call_infos","RubyProf::Thread","RubyProf/Thread.html#method-i-top_call_infos","()",""],["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)",""],["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 - 2014 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.html","","examples/graph_html.html","","<p><!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN”\n“www.w3.org/TR/html4/strict.dtd”> …\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","thread","<=>()","aggregate_children()","aggregate_parents()","application()","arguments()","base64_image()","call()","call_sequence()","called()","called()","children()","children()","children_time()","children_time()","children_time()","clean_output_directory()","clear_cached_values_which_depend_on_recursiveness()","color()","convert()","cpu_frequency()","create_link()","create_output_directory()","define()","descendent_of()","detect_recursion()","detect_recursion()","detect_recursion()","dump()","eliminate!()","eliminate!()","eliminate_methods!()","exclude_threads()","exclude_threads=()","expansion()","figure_measure_mode()","file()","file_link()","find_call()","flat_profile()","graph_link()","graph_profile()","inspect()","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_string()","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()","non_recursive()","non_recursive?()","non_recursive?()","open_asset()","option_parser()","output_directory()","parent()","parents()","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()","recalc_recursion()","recalc_recursion()","recalc_recursion()","recursive?()","resume()","resume()","root?()","root?()","roots_of()","run()","run_script()","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_call_infos()","top_methods()","total_time()","total_time()","total_time()","total_time()","tree_profile()","visit()","wait_time()","wait_time()","license","readme","flat","graph.html","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::thread","rubyprof::methodinfo#<=>()","rubyprof::methodinfo#aggregate_children()","rubyprof::methodinfo#aggregate_parents()","rubyprof::callstackprinter#application()","rubyprof::callstackprinter#arguments()","rubyprof::callstackprinter#base64_image()","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::methodinfo#clear_cached_values_which_depend_on_recursiveness()","rubyprof::callstackprinter#color()","rubyprof::calltreeprinter#convert()","rubyprof::cpu_frequency()","rubyprof::graphhtmlprinter#create_link()","rubyprof::profiletask#create_output_directory()","rubyprof::profiletask#define()","rubyprof::callinfo#descendent_of()","rubyprof::callinfo#detect_recursion()","rubyprof::methodinfo#detect_recursion()","rubyprof::thread#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::callstackprinter#graph_link()","rubyprof::multiprinter#graph_profile()","rubyprof::callinfo#inspect()","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::measure_mode_string()","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::methodinfo#non_recursive()","rubyprof::callinfo#non_recursive?()","rubyprof::methodinfo#non_recursive?()","rubyprof::callstackprinter#open_asset()","rubyprof::cmd#option_parser()","rubyprof::profiletask#output_directory()","rubyprof::aggregatecallinfo#parent()","rubyprof::methodinfo#parents()","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::callinfo#recalc_recursion()","rubyprof::methodinfo#recalc_recursion()","rubyprof::thread#recalc_recursion()","rubyprof::methodinfo#recursive?()","rubyprof::resume()","rubyprof::profile#resume()","rubyprof::callinfo#root?()","rubyprof::methodinfo#root?()","rubyprof::callinfo::roots_of()","rubyprof::cmd#run()","rubyprof::profiletask#run_script()","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_call_infos()","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::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 list of\nmethod infos. 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:TestTask …\n"],["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","()",""],["base64_image","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-base64_image","()",""],["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","()",""],["clear_cached_values_which_depend_on_recursiveness","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-clear_cached_values_which_depend_on_recursiveness","()",""],["color","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-color","(p)",""],["convert","RubyProf::CallTreePrinter","RubyProf/CallTreePrinter.html#method-i-convert","(value)",""],["cpu_frequency","RubyProf","RubyProf.html#method-c-cpu_frequency","()","<p>Measurements\n"],["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"],["descendent_of","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-descendent_of","(other)",""],["detect_recursion","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-detect_recursion","(visited_methods = Hash.new(0))",""],["detect_recursion","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-detect_recursion","()",""],["detect_recursion","RubyProf::Thread","RubyProf/Thread.html#method-i-detect_recursion","()","<p>This method detect recursive calls in the call tree of a given thread It\nshould be called only once for …\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"],["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"],["inspect","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-inspect","()",""],["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_string","RubyProf","RubyProf.html#method-c-measure_mode_string","()",""],["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","(call_infos)",""],["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)",""],["non_recursive","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-non_recursive","()",""],["non_recursive?","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-non_recursive-3F","()",""],["non_recursive?","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-non_recursive-3F","()",""],["open_asset","RubyProf::CallStackPrinter","RubyProf/CallStackPrinter.html#method-i-open_asset","(file)",""],["option_parser","RubyProf::Cmd","RubyProf/Cmd.html#method-i-option_parser","()",""],["output_directory","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-output_directory","()",""],["parent","RubyProf::AggregateCallInfo","RubyProf/AggregateCallInfo.html#method-i-parent","()",""],["parents","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-parents","()",""],["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"],["recalc_recursion","RubyProf::CallInfo","RubyProf/CallInfo.html#method-i-recalc_recursion","(visited_methods = Hash.new(0))",""],["recalc_recursion","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-recalc_recursion","()",""],["recalc_recursion","RubyProf::Thread","RubyProf/Thread.html#method-i-recalc_recursion","()",""],["recursive?","RubyProf::MethodInfo","RubyProf/MethodInfo.html#method-i-recursive-3F","()",""],["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","()",""],["roots_of","RubyProf::CallInfo","RubyProf/CallInfo.html#method-c-roots_of","(call_infos)",""],["run","RubyProf::Cmd","RubyProf/Cmd.html#method-i-run","()",""],["run_script","RubyProf::ProfileTask","RubyProf/ProfileTask.html#method-i-run_script","(script_path)","<p>Run script\n"],["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_call_infos","RubyProf::Thread","RubyProf/Thread.html#method-i-top_call_infos","()",""],["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)",""],["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 - 2014 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.html","","examples/graph_html.html","","<p><!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN”\n“www.w3.org/TR/html4/strict.dtd”> …\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/doc/js/search_index.js.gz
CHANGED
Binary file
|
data/doc/table_of_contents.html
CHANGED
@@ -328,6 +328,11 @@
|
|
328
328
|
—
|
329
329
|
<span class="container">RubyProf::CallStackPrinter</span>
|
330
330
|
|
331
|
+
<li class="method">
|
332
|
+
<a href="RubyProf/CallStackPrinter.html#method-i-base64_image">#base64_image</a>
|
333
|
+
—
|
334
|
+
<span class="container">RubyProf::CallStackPrinter</span>
|
335
|
+
|
331
336
|
<li class="method">
|
332
337
|
<a href="Rack/RubyProf.html#method-i-call">#call</a>
|
333
338
|
—
|
@@ -339,14 +344,14 @@
|
|
339
344
|
<span class="container">RubyProf::CallInfo</span>
|
340
345
|
|
341
346
|
<li class="method">
|
342
|
-
<a href="RubyProf/
|
347
|
+
<a href="RubyProf/MethodInfo.html#method-i-called">#called</a>
|
343
348
|
—
|
344
|
-
<span class="container">RubyProf::
|
349
|
+
<span class="container">RubyProf::MethodInfo</span>
|
345
350
|
|
346
351
|
<li class="method">
|
347
|
-
<a href="RubyProf/
|
352
|
+
<a href="RubyProf/AggregateCallInfo.html#method-i-called">#called</a>
|
348
353
|
—
|
349
|
-
<span class="container">RubyProf::
|
354
|
+
<span class="container">RubyProf::AggregateCallInfo</span>
|
350
355
|
|
351
356
|
<li class="method">
|
352
357
|
<a href="RubyProf/MethodInfo.html#method-i-children">#children</a>
|
@@ -393,11 +398,6 @@
|
|
393
398
|
—
|
394
399
|
<span class="container">RubyProf::CallTreePrinter</span>
|
395
400
|
|
396
|
-
<li class="method">
|
397
|
-
<a href="RubyProf/CallStackPrinter.html#method-i-copy_image_files">#copy_image_files</a>
|
398
|
-
—
|
399
|
-
<span class="container">RubyProf::CallStackPrinter</span>
|
400
|
-
|
401
401
|
<li class="method">
|
402
402
|
<a href="RubyProf/GraphHtmlPrinter.html#method-i-create_link">#create_link</a>
|
403
403
|
—
|
@@ -424,14 +424,14 @@
|
|
424
424
|
<span class="container">RubyProf::Thread</span>
|
425
425
|
|
426
426
|
<li class="method">
|
427
|
-
<a href="RubyProf/
|
427
|
+
<a href="RubyProf/CallInfo.html#method-i-detect_recursion">#detect_recursion</a>
|
428
428
|
—
|
429
|
-
<span class="container">RubyProf::
|
429
|
+
<span class="container">RubyProf::CallInfo</span>
|
430
430
|
|
431
431
|
<li class="method">
|
432
|
-
<a href="RubyProf/
|
432
|
+
<a href="RubyProf/MethodInfo.html#method-i-detect_recursion">#detect_recursion</a>
|
433
433
|
—
|
434
|
-
<span class="container">RubyProf::
|
434
|
+
<span class="container">RubyProf::MethodInfo</span>
|
435
435
|
|
436
436
|
<li class="method">
|
437
437
|
<a href="RubyProf/CallStackPrinter.html#method-i-dump">#dump</a>
|
@@ -439,14 +439,14 @@
|
|
439
439
|
<span class="container">RubyProf::CallStackPrinter</span>
|
440
440
|
|
441
441
|
<li class="method">
|
442
|
-
<a href="RubyProf/
|
442
|
+
<a href="RubyProf/CallInfo.html#method-i-eliminate-21">#eliminate!</a>
|
443
443
|
—
|
444
|
-
<span class="container">RubyProf::
|
444
|
+
<span class="container">RubyProf::CallInfo</span>
|
445
445
|
|
446
446
|
<li class="method">
|
447
|
-
<a href="RubyProf/
|
447
|
+
<a href="RubyProf/MethodInfo.html#method-i-eliminate-21">#eliminate!</a>
|
448
448
|
—
|
449
|
-
<span class="container">RubyProf::
|
449
|
+
<span class="container">RubyProf::MethodInfo</span>
|
450
450
|
|
451
451
|
<li class="method">
|
452
452
|
<a href="RubyProf/Profile.html#method-i-eliminate_methods-21">#eliminate_methods!</a>
|
@@ -519,14 +519,14 @@
|
|
519
519
|
<span class="container">RubyProf::CallInfo</span>
|
520
520
|
|
521
521
|
<li class="method">
|
522
|
-
<a href="RubyProf/
|
522
|
+
<a href="RubyProf/CallStackPrinter.html#method-i-method_href">#method_href</a>
|
523
523
|
—
|
524
|
-
<span class="container">RubyProf::
|
524
|
+
<span class="container">RubyProf::CallStackPrinter</span>
|
525
525
|
|
526
526
|
<li class="method">
|
527
|
-
<a href="RubyProf/
|
527
|
+
<a href="RubyProf/GraphHtmlPrinter.html#method-i-method_href">#method_href</a>
|
528
528
|
—
|
529
|
-
<span class="container">RubyProf::
|
529
|
+
<span class="container">RubyProf::GraphHtmlPrinter</span>
|
530
530
|
|
531
531
|
<li class="method">
|
532
532
|
<a href="RubyProf/AbstractPrinter.html#method-i-method_name">#method_name</a>
|
@@ -563,6 +563,11 @@
|
|
563
563
|
—
|
564
564
|
<span class="container">RubyProf::CallInfo</span>
|
565
565
|
|
566
|
+
<li class="method">
|
567
|
+
<a href="RubyProf/CallStackPrinter.html#method-i-open_asset">#open_asset</a>
|
568
|
+
—
|
569
|
+
<span class="container">RubyProf::CallStackPrinter</span>
|
570
|
+
|
566
571
|
<li class="method">
|
567
572
|
<a href="RubyProf/Cmd.html#method-i-option_parser">#option_parser</a>
|
568
573
|
—
|
@@ -604,39 +609,39 @@
|
|
604
609
|
<span class="container">RubyProf::Profile</span>
|
605
610
|
|
606
611
|
<li class="method">
|
607
|
-
<a href="RubyProf/
|
612
|
+
<a href="RubyProf/CallTreePrinter.html#method-i-print">#print</a>
|
608
613
|
—
|
609
|
-
<span class="container">RubyProf::
|
614
|
+
<span class="container">RubyProf::CallTreePrinter</span>
|
610
615
|
|
611
616
|
<li class="method">
|
612
|
-
<a href="RubyProf/
|
617
|
+
<a href="RubyProf/MultiPrinter.html#method-i-print">#print</a>
|
613
618
|
—
|
614
|
-
<span class="container">RubyProf::
|
619
|
+
<span class="container">RubyProf::MultiPrinter</span>
|
615
620
|
|
616
621
|
<li class="method">
|
617
|
-
<a href="RubyProf/
|
622
|
+
<a href="RubyProf/CallStackPrinter.html#method-i-print">#print</a>
|
618
623
|
—
|
619
|
-
<span class="container">RubyProf::
|
624
|
+
<span class="container">RubyProf::CallStackPrinter</span>
|
620
625
|
|
621
626
|
<li class="method">
|
622
|
-
<a href="
|
627
|
+
<a href="RubyProf/GraphHtmlPrinter.html#method-i-print">#print</a>
|
623
628
|
—
|
624
|
-
<span class="container">
|
629
|
+
<span class="container">RubyProf::GraphHtmlPrinter</span>
|
625
630
|
|
626
631
|
<li class="method">
|
627
|
-
<a href="RubyProf/
|
632
|
+
<a href="RubyProf/DotPrinter.html#method-i-print">#print</a>
|
628
633
|
—
|
629
|
-
<span class="container">RubyProf::
|
634
|
+
<span class="container">RubyProf::DotPrinter</span>
|
630
635
|
|
631
636
|
<li class="method">
|
632
|
-
<a href="RubyProf/
|
637
|
+
<a href="RubyProf/AbstractPrinter.html#method-i-print">#print</a>
|
633
638
|
—
|
634
|
-
<span class="container">RubyProf::
|
639
|
+
<span class="container">RubyProf::AbstractPrinter</span>
|
635
640
|
|
636
641
|
<li class="method">
|
637
|
-
<a href="RubyProf
|
642
|
+
<a href="Rack/RubyProf.html#method-i-print">#print</a>
|
638
643
|
—
|
639
|
-
<span class="container">RubyProf
|
644
|
+
<span class="container">Rack::RubyProf</span>
|
640
645
|
|
641
646
|
<li class="method">
|
642
647
|
<a href="RubyProf/CallStackPrinter.html#method-i-print_commands">#print_commands</a>
|
@@ -653,26 +658,26 @@
|
|
653
658
|
—
|
654
659
|
<span class="container">RubyProf::AbstractPrinter</span>
|
655
660
|
|
656
|
-
<li class="method">
|
657
|
-
<a href="RubyProf/AbstractPrinter.html#method-i-print_footer">#print_footer</a>
|
658
|
-
—
|
659
|
-
<span class="container">RubyProf::AbstractPrinter</span>
|
660
|
-
|
661
661
|
<li class="method">
|
662
662
|
<a href="RubyProf/CallStackPrinter.html#method-i-print_footer">#print_footer</a>
|
663
663
|
—
|
664
664
|
<span class="container">RubyProf::CallStackPrinter</span>
|
665
665
|
|
666
666
|
<li class="method">
|
667
|
-
<a href="RubyProf/
|
667
|
+
<a href="RubyProf/AbstractPrinter.html#method-i-print_footer">#print_footer</a>
|
668
668
|
—
|
669
|
-
<span class="container">RubyProf::
|
669
|
+
<span class="container">RubyProf::AbstractPrinter</span>
|
670
670
|
|
671
671
|
<li class="method">
|
672
672
|
<a href="RubyProf/AbstractPrinter.html#method-i-print_header">#print_header</a>
|
673
673
|
—
|
674
674
|
<span class="container">RubyProf::AbstractPrinter</span>
|
675
675
|
|
676
|
+
<li class="method">
|
677
|
+
<a href="RubyProf/CallStackPrinter.html#method-i-print_header">#print_header</a>
|
678
|
+
—
|
679
|
+
<span class="container">RubyProf::CallStackPrinter</span>
|
680
|
+
|
676
681
|
<li class="method">
|
677
682
|
<a href="RubyProf/CallStackPrinter.html#method-i-print_help">#print_help</a>
|
678
683
|
—
|
@@ -719,9 +724,9 @@
|
|
719
724
|
<span class="container">RubyProf::CallStackPrinter</span>
|
720
725
|
|
721
726
|
<li class="method">
|
722
|
-
<a href="RubyProf/
|
727
|
+
<a href="RubyProf/CallInfo.html#method-i-recalc_recursion">#recalc_recursion</a>
|
723
728
|
—
|
724
|
-
<span class="container">RubyProf::
|
729
|
+
<span class="container">RubyProf::CallInfo</span>
|
725
730
|
|
726
731
|
<li class="method">
|
727
732
|
<a href="RubyProf/Thread.html#method-i-recalc_recursion">#recalc_recursion</a>
|
@@ -729,9 +734,9 @@
|
|
729
734
|
<span class="container">RubyProf::Thread</span>
|
730
735
|
|
731
736
|
<li class="method">
|
732
|
-
<a href="RubyProf/
|
737
|
+
<a href="RubyProf/MethodInfo.html#method-i-recalc_recursion">#recalc_recursion</a>
|
733
738
|
—
|
734
|
-
<span class="container">RubyProf::
|
739
|
+
<span class="container">RubyProf::MethodInfo</span>
|
735
740
|
|
736
741
|
<li class="method">
|
737
742
|
<a href="RubyProf/MethodInfo.html#method-i-recursive-3F">#recursive?</a>
|
@@ -744,14 +749,14 @@
|
|
744
749
|
<span class="container">RubyProf::Profile</span>
|
745
750
|
|
746
751
|
<li class="method">
|
747
|
-
<a href="RubyProf/
|
752
|
+
<a href="RubyProf/MethodInfo.html#method-i-root-3F">#root?</a>
|
748
753
|
—
|
749
|
-
<span class="container">RubyProf::
|
754
|
+
<span class="container">RubyProf::MethodInfo</span>
|
750
755
|
|
751
756
|
<li class="method">
|
752
|
-
<a href="RubyProf/
|
757
|
+
<a href="RubyProf/CallInfo.html#method-i-root-3F">#root?</a>
|
753
758
|
—
|
754
|
-
<span class="container">RubyProf::
|
759
|
+
<span class="container">RubyProf::CallInfo</span>
|
755
760
|
|
756
761
|
<li class="method">
|
757
762
|
<a href="RubyProf/Cmd.html#method-i-run">#run</a>
|
@@ -778,11 +783,6 @@
|
|
778
783
|
—
|
779
784
|
<span class="container">RubyProf::MethodInfo</span>
|
780
785
|
|
781
|
-
<li class="method">
|
782
|
-
<a href="RubyProf/Cmd.html#method-i-setup_options">#setup_options</a>
|
783
|
-
—
|
784
|
-
<span class="container">RubyProf::Cmd</span>
|
785
|
-
|
786
786
|
<li class="method">
|
787
787
|
<a href="RubyProf/AbstractPrinter.html#method-i-setup_options">#setup_options</a>
|
788
788
|
—
|
@@ -794,15 +794,20 @@
|
|
794
794
|
<span class="container">RubyProf::GraphHtmlPrinter</span>
|
795
795
|
|
796
796
|
<li class="method">
|
797
|
-
<a href="RubyProf/
|
797
|
+
<a href="RubyProf/Cmd.html#method-i-setup_options">#setup_options</a>
|
798
798
|
—
|
799
|
-
<span class="container">RubyProf::
|
799
|
+
<span class="container">RubyProf::Cmd</span>
|
800
800
|
|
801
801
|
<li class="method">
|
802
802
|
<a href="RubyProf/AbstractPrinter.html#method-i-sort_method">#sort_method</a>
|
803
803
|
—
|
804
804
|
<span class="container">RubyProf::AbstractPrinter</span>
|
805
805
|
|
806
|
+
<li class="method">
|
807
|
+
<a href="RubyProf/FlatPrinter.html#method-i-sort_method">#sort_method</a>
|
808
|
+
—
|
809
|
+
<span class="container">RubyProf::FlatPrinter</span>
|
810
|
+
|
806
811
|
<li class="method">
|
807
812
|
<a href="RubyProf/CallInfo.html#method-i-stack">#stack</a>
|
808
813
|
—
|
@@ -853,11 +858,6 @@
|
|
853
858
|
—
|
854
859
|
<span class="container">RubyProf::CallStackPrinter</span>
|
855
860
|
|
856
|
-
<li class="method">
|
857
|
-
<a href="RubyProf/CallInfo.html#method-i-to_s">#to_s</a>
|
858
|
-
—
|
859
|
-
<span class="container">RubyProf::CallInfo</span>
|
860
|
-
|
861
861
|
<li class="method">
|
862
862
|
<a href="RubyProf/AggregateCallInfo.html#method-i-to_s">#to_s</a>
|
863
863
|
—
|
@@ -868,6 +868,11 @@
|
|
868
868
|
—
|
869
869
|
<span class="container">RubyProf::MethodInfo</span>
|
870
870
|
|
871
|
+
<li class="method">
|
872
|
+
<a href="RubyProf/CallInfo.html#method-i-to_s">#to_s</a>
|
873
|
+
—
|
874
|
+
<span class="container">RubyProf::CallInfo</span>
|
875
|
+
|
871
876
|
<li class="method">
|
872
877
|
<a href="RubyProf/Thread.html#method-i-top_call_infos">#top_call_infos</a>
|
873
878
|
—
|
@@ -878,6 +883,11 @@
|
|
878
883
|
—
|
879
884
|
<span class="container">RubyProf::Thread</span>
|
880
885
|
|
886
|
+
<li class="method">
|
887
|
+
<a href="RubyProf/Thread.html#method-i-total_time">#total_time</a>
|
888
|
+
—
|
889
|
+
<span class="container">RubyProf::Thread</span>
|
890
|
+
|
881
891
|
<li class="method">
|
882
892
|
<a href="RubyProf/MethodInfo.html#method-i-total_time">#total_time</a>
|
883
893
|
—
|
@@ -893,11 +903,6 @@
|
|
893
903
|
—
|
894
904
|
<span class="container">RubyProf::AggregateCallInfo</span>
|
895
905
|
|
896
|
-
<li class="method">
|
897
|
-
<a href="RubyProf/Thread.html#method-i-total_time">#total_time</a>
|
898
|
-
—
|
899
|
-
<span class="container">RubyProf::Thread</span>
|
900
|
-
|
901
906
|
<li class="method">
|
902
907
|
<a href="RubyProf/MultiPrinter.html#method-i-tree_profile">#tree_profile</a>
|
903
908
|
—
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'erb'
|
4
4
|
require 'fileutils'
|
5
|
+
require 'base64'
|
5
6
|
|
6
7
|
module RubyProf
|
7
8
|
# prints a HTML visualization of the call tree
|
@@ -69,7 +70,6 @@ module RubyProf
|
|
69
70
|
|
70
71
|
print_footer
|
71
72
|
|
72
|
-
copy_image_files
|
73
73
|
end
|
74
74
|
|
75
75
|
def print_stack(call_info, parent_time)
|
@@ -84,13 +84,13 @@ module RubyProf
|
|
84
84
|
display = visible ? "block" : "none"
|
85
85
|
@output.print "<li class=\"color#{color}\" style=\"display:#{display}\">"
|
86
86
|
if kids.empty?
|
87
|
-
@output.print "<
|
87
|
+
@output.print "<a href=\"#\" class=\"toggle empty\" ></a>"
|
88
88
|
else
|
89
89
|
visible_children = kids.any?{|ci| (ci.total_time/@overall_time)*100 >= threshold}
|
90
90
|
image = visible_children ? (expanded ? "minus" : "plus") : "empty"
|
91
|
-
@output.print "<
|
91
|
+
@output.print "<a href=\"#\" class=\"toggle #{image}\" ></a>"
|
92
92
|
end
|
93
|
-
@output.printf " %4.2f%% (%4.2f%%) %s %s
|
93
|
+
@output.printf "<span> %4.2f%% (%4.2f%%) %s %s</span>\n", percent_total, percent_parent, link(call_info), graph_link(call_info)
|
94
94
|
unless kids.empty?
|
95
95
|
if expanded
|
96
96
|
@output.print "<ul>"
|
@@ -180,18 +180,6 @@ module RubyProf
|
|
180
180
|
@options[:expansion] || 10.0
|
181
181
|
end
|
182
182
|
|
183
|
-
def copy_image_files
|
184
|
-
if @output.is_a?(File)
|
185
|
-
target_dir = File.dirname(@output.path)
|
186
|
-
image_dir = File.join(File.dirname(__FILE__), '..', 'images')
|
187
|
-
%w(empty plus minus).each do |img|
|
188
|
-
source_file = "#{image_dir}/#{img}.png"
|
189
|
-
target_file = "#{target_dir}/#{img}.png"
|
190
|
-
FileUtils.cp(source_file, target_file) unless File.exist?(target_file)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
183
|
def print_header
|
196
184
|
@output.puts "<html><head>"
|
197
185
|
@output.puts '<meta http-equiv="content-type" content="text/html; charset=utf-8">'
|
@@ -208,525 +196,24 @@ module RubyProf
|
|
208
196
|
@output.puts '<div id="sentinel"></div></div></body></html>'
|
209
197
|
end
|
210
198
|
|
199
|
+
def open_asset(file)
|
200
|
+
path = File.join(File.expand_path('../../assets', __FILE__), file)
|
201
|
+
File.open(path, 'rb').read
|
202
|
+
end
|
203
|
+
|
211
204
|
def print_css
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
margin-right:0px;
|
220
|
-
margin-left:0px;
|
221
|
-
background: #ffffff;
|
222
|
-
}
|
223
|
-
ul {
|
224
|
-
margin-left:0px;
|
225
|
-
margin-top:0px;
|
226
|
-
margin-bottom:0px;
|
227
|
-
padding-left:0px;
|
228
|
-
list-style-type:none;
|
229
|
-
}
|
230
|
-
li {
|
231
|
-
margin-left:11px;
|
232
|
-
padding:0px;
|
233
|
-
white-space:nowrap;
|
234
|
-
border-top:1px solid #cccccc;
|
235
|
-
border-left:1px solid #cccccc;
|
236
|
-
border-bottom:none;
|
237
|
-
}
|
238
|
-
.thread {
|
239
|
-
margin-left:11px;
|
240
|
-
background:#708090;
|
241
|
-
padding-top:3px;
|
242
|
-
padding-left:12px;
|
243
|
-
padding-bottom:2px;
|
244
|
-
border-left:1px solid #CCCCCC;
|
245
|
-
border-top:1px solid #CCCCCC;
|
246
|
-
font-weight:bold;
|
247
|
-
}
|
248
|
-
.hidden {
|
249
|
-
display:none;
|
250
|
-
width:0px;
|
251
|
-
height:0px;
|
252
|
-
margin:0px;
|
253
|
-
padding:0px;
|
254
|
-
border-style:none;
|
255
|
-
}
|
256
|
-
.color01 { background:#adbdeb }
|
257
|
-
.color05 { background:#9daddb }
|
258
|
-
.color0 { background:#8d9dcb }
|
259
|
-
.color1 { background:#89bccb }
|
260
|
-
.color2 { background:#56e3e7 }
|
261
|
-
.color3 { background:#32cd70 }
|
262
|
-
.color4 { background:#a3d53c }
|
263
|
-
.color5 { background:#c4cb34 }
|
264
|
-
.color6 { background:#dcb66d }
|
265
|
-
.color7 { background:#cda59e }
|
266
|
-
.color8 { background:#be9d9c }
|
267
|
-
.color9 { background:#cf947a }
|
268
|
-
#commands {
|
269
|
-
font-size:10pt;
|
270
|
-
padding:10px;
|
271
|
-
margin-left:11px;
|
272
|
-
margin-bottom:0px;
|
273
|
-
margin-top:0px;
|
274
|
-
background:#708090;
|
275
|
-
border-top:1px solid #cccccc;
|
276
|
-
border-left:1px solid #cccccc;
|
277
|
-
border-bottom:none;
|
278
|
-
}
|
279
|
-
#titlebar {
|
280
|
-
font-size:10pt;
|
281
|
-
padding:10px;
|
282
|
-
margin-left:11px;
|
283
|
-
margin-bottom:0px;
|
284
|
-
margin-top:10px;
|
285
|
-
background:#8090a0;
|
286
|
-
border-top:1px solid #cccccc;
|
287
|
-
border-left:1px solid #cccccc;
|
288
|
-
border-bottom:none;
|
289
|
-
}
|
290
|
-
#help {
|
291
|
-
font-size:10pt;
|
292
|
-
padding:10px;
|
293
|
-
margin-left:11px;
|
294
|
-
margin-bottom:0px;
|
295
|
-
margin-top:0px;
|
296
|
-
background:#8090a0;
|
297
|
-
display:none;
|
298
|
-
border-top:1px solid #cccccc;
|
299
|
-
border-left:1px solid #cccccc;
|
300
|
-
border-bottom:none;
|
301
|
-
}
|
302
|
-
#sentinel {
|
303
|
-
height: 400px;
|
304
|
-
margin-left:11px;
|
305
|
-
background:#8090a0;
|
306
|
-
border-top:1px solid #cccccc;
|
307
|
-
border-left:1px solid #cccccc;
|
308
|
-
border-bottom:none;
|
309
|
-
}
|
310
|
-
input { margin-left:10px; }
|
311
|
-
-->
|
312
|
-
</style>
|
313
|
-
end_css
|
205
|
+
html = open_asset('call_stack_printer.css.html')
|
206
|
+
@output.puts html.gsub('%s', base64_image)
|
207
|
+
end
|
208
|
+
|
209
|
+
def base64_image
|
210
|
+
file = open_asset('call_stack_printer.png')
|
211
|
+
Base64.encode64(file).gsub(/\n/, '')
|
314
212
|
end
|
315
213
|
|
316
214
|
def print_java_script
|
317
|
-
|
318
|
-
|
319
|
-
/*
|
320
|
-
Copyright (C) 2005,2009 Stefan Kaes
|
321
|
-
skaes@railsexpress.de
|
322
|
-
*/
|
323
|
-
|
324
|
-
function rootNode() {
|
325
|
-
return currentThread;
|
326
|
-
}
|
327
|
-
|
328
|
-
function hideUL(node) {
|
329
|
-
var lis = node.childNodes
|
330
|
-
var l = lis.length;
|
331
|
-
for (var i=0; i < l ; i++ ) {
|
332
|
-
hideLI(lis[i]);
|
333
|
-
}
|
334
|
-
}
|
335
|
-
|
336
|
-
function showUL(node) {
|
337
|
-
var lis = node.childNodes;
|
338
|
-
var l = lis.length;
|
339
|
-
for (var i=0; i < l ; i++ ) {
|
340
|
-
showLI(lis[i]);
|
341
|
-
}
|
342
|
-
}
|
343
|
-
|
344
|
-
function findUlChild(li){
|
345
|
-
var ul = li.childNodes[2];
|
346
|
-
while (ul && ul.nodeName != "UL") {
|
347
|
-
ul = ul.nextSibling;
|
348
|
-
}
|
349
|
-
return ul;
|
350
|
-
}
|
351
|
-
|
352
|
-
function isLeafNode(li) {
|
353
|
-
var img = li.firstChild;
|
354
|
-
return (img.src.indexOf('empty.png') > -1);
|
355
|
-
}
|
356
|
-
|
357
|
-
function hideLI(li) {
|
358
|
-
if (isLeafNode(li))
|
359
|
-
return;
|
360
|
-
|
361
|
-
var img = li.firstChild;
|
362
|
-
img.src = 'plus.png';
|
363
|
-
|
364
|
-
var ul = findUlChild(li);
|
365
|
-
if (ul) {
|
366
|
-
ul.style.display = 'none';
|
367
|
-
hideUL(ul);
|
368
|
-
}
|
369
|
-
}
|
370
|
-
|
371
|
-
function showLI(li) {
|
372
|
-
if (isLeafNode(li))
|
373
|
-
return;
|
374
|
-
|
375
|
-
var img = li.firstChild;
|
376
|
-
img.src = 'minus.png';
|
377
|
-
|
378
|
-
var ul = findUlChild(li);
|
379
|
-
if (ul) {
|
380
|
-
ul.style.display = 'block';
|
381
|
-
showUL(ul);
|
382
|
-
}
|
383
|
-
}
|
384
|
-
|
385
|
-
function toggleLI(li) {
|
386
|
-
var img = li.firstChild;
|
387
|
-
if (img.src.indexOf("minus.png")>-1)
|
388
|
-
hideLI(li);
|
389
|
-
else {
|
390
|
-
if (img.src.indexOf("plus.png")>-1)
|
391
|
-
showLI(li);
|
392
|
-
}
|
393
|
-
}
|
394
|
-
|
395
|
-
function aboveThreshold(text, threshold) {
|
396
|
-
var match = text.match(/\d+[.,]\d+/);
|
397
|
-
return (match && parseFloat(match[0].replace(/,/, '.'))>=threshold);
|
398
|
-
}
|
399
|
-
|
400
|
-
function setThresholdLI(li, threshold) {
|
401
|
-
var img = li.firstChild;
|
402
|
-
var text = img.nextSibling;
|
403
|
-
var ul = findUlChild(li);
|
404
|
-
|
405
|
-
var visible = aboveThreshold(text.nodeValue, threshold) ? 1 : 0;
|
406
|
-
|
407
|
-
var count = 0;
|
408
|
-
if (ul) {
|
409
|
-
count = setThresholdUL(ul, threshold);
|
410
|
-
}
|
411
|
-
if (count>0) {
|
412
|
-
img.src = 'minus.png';
|
413
|
-
}
|
414
|
-
else {
|
415
|
-
img.src = 'empty.png';
|
416
|
-
}
|
417
|
-
if (visible) {
|
418
|
-
li.style.display = 'block'
|
419
|
-
}
|
420
|
-
else {
|
421
|
-
li.style.display = 'none'
|
422
|
-
}
|
423
|
-
return visible;
|
424
|
-
}
|
425
|
-
|
426
|
-
function setThresholdUL(node, threshold) {
|
427
|
-
var lis = node.childNodes;
|
428
|
-
var l = lis.length;
|
429
|
-
|
430
|
-
var count = 0;
|
431
|
-
for ( var i = 0; i < l ; i++ ) {
|
432
|
-
count = count + setThresholdLI(lis[i], threshold);
|
433
|
-
}
|
434
|
-
|
435
|
-
var visible = (count > 0) ? 1 : 0;
|
436
|
-
if (visible) {
|
437
|
-
node.style.display = 'block';
|
438
|
-
}
|
439
|
-
else {
|
440
|
-
node.style.display = 'none';
|
441
|
-
}
|
442
|
-
return visible;
|
443
|
-
}
|
444
|
-
|
445
|
-
function toggleChildren(img, event) {
|
446
|
-
event.cancelBubble=true;
|
447
|
-
|
448
|
-
if (img.src.indexOf('empty.png') > -1)
|
449
|
-
return;
|
450
|
-
|
451
|
-
var minus = (img.src.indexOf('minus.png') > -1);
|
452
|
-
|
453
|
-
if (minus) {
|
454
|
-
img.src = 'plus.png';
|
455
|
-
}
|
456
|
-
else
|
457
|
-
img.src = 'minus.png';
|
458
|
-
|
459
|
-
var li = img.parentNode;
|
460
|
-
var ul = findUlChild(li);
|
461
|
-
if (ul) {
|
462
|
-
if (minus)
|
463
|
-
ul.style.display = 'none';
|
464
|
-
else
|
465
|
-
ul.style.display = 'block';
|
466
|
-
}
|
467
|
-
if (minus)
|
468
|
-
moveSelectionIfNecessary(li);
|
469
|
-
}
|
470
|
-
|
471
|
-
function showChildren(li) {
|
472
|
-
var img = li.firstChild;
|
473
|
-
if (img.src.indexOf('empty.png') > -1)
|
474
|
-
return;
|
475
|
-
img.src = 'minus.png';
|
476
|
-
|
477
|
-
var ul = findUlChild(li);
|
478
|
-
if (ul) {
|
479
|
-
ul.style.display = 'block';
|
480
|
-
}
|
481
|
-
}
|
482
|
-
|
483
|
-
function setThreshold() {
|
484
|
-
var tv = document.getElementById("threshold").value;
|
485
|
-
if (tv.match(/[0-9]+([.,][0-9]+)?/)) {
|
486
|
-
var f = parseFloat(tv.replace(/,/, '.'));
|
487
|
-
var threads = document.getElementsByName("thread");
|
488
|
-
var l = threads.length;
|
489
|
-
for ( var i = 0; i < l ; i++ ) {
|
490
|
-
setThresholdUL(threads[i], f);
|
491
|
-
}
|
492
|
-
var p = selectedNode;
|
493
|
-
while (p && p.style.display=='none')
|
494
|
-
p=p.parentNode.parentNode;
|
495
|
-
if (p && p.nodeName=="LI")
|
496
|
-
selectNode(p);
|
497
|
-
}
|
498
|
-
else {
|
499
|
-
alert("Please specify a decimal number as threshold value!");
|
500
|
-
}
|
501
|
-
}
|
502
|
-
|
503
|
-
function collapseAll(event) {
|
504
|
-
event.cancelBubble=true;
|
505
|
-
var threads = document.getElementsByName("thread");
|
506
|
-
var l = threads.length;
|
507
|
-
for ( var i = 0; i < l ; i++ ) {
|
508
|
-
hideUL(threads[i]);
|
509
|
-
}
|
510
|
-
selectNode(rootNode(), null);
|
511
|
-
}
|
512
|
-
|
513
|
-
function expandAll(event) {
|
514
|
-
event.cancelBubble=true;
|
515
|
-
var threads = document.getElementsByName("thread");
|
516
|
-
var l = threads.length;
|
517
|
-
for ( var i = 0; i < l ; i++ ) {
|
518
|
-
showUL(threads[i]);
|
519
|
-
}
|
520
|
-
}
|
521
|
-
|
522
|
-
function toggleHelp(node) {
|
523
|
-
var help = document.getElementById("help");
|
524
|
-
if (node.value == "Show Help") {
|
525
|
-
node.value = "Hide Help";
|
526
|
-
help.style.display = 'block';
|
527
|
-
}
|
528
|
-
else {
|
529
|
-
node.value = "Show Help";
|
530
|
-
help.style.display = 'none';
|
531
|
-
}
|
532
|
-
}
|
533
|
-
|
534
|
-
var selectedNode = null;
|
535
|
-
var selectedColor = null;
|
536
|
-
var selectedThread = null;
|
537
|
-
|
538
|
-
function descendentOf(a,b){
|
539
|
-
while (a!=b && b!=null)
|
540
|
-
b=b.parentNode;
|
541
|
-
return (a==b);
|
542
|
-
}
|
543
|
-
|
544
|
-
function moveSelectionIfNecessary(node){
|
545
|
-
if (descendentOf(node, selectedNode))
|
546
|
-
selectNode(node, null);
|
547
|
-
}
|
548
|
-
|
549
|
-
function selectNode(node, event) {
|
550
|
-
if (event) {
|
551
|
-
event.cancelBubble = true;
|
552
|
-
thread = findThread(node);
|
553
|
-
selectThread(thread);
|
554
|
-
}
|
555
|
-
if (selectedNode) {
|
556
|
-
selectedNode.style.background = selectedColor;
|
557
|
-
}
|
558
|
-
selectedNode = node;
|
559
|
-
selectedColor = node.style.background;
|
560
|
-
selectedNode.style.background = "red";
|
561
|
-
selectedNode.scrollIntoView();
|
562
|
-
window.scrollBy(0,-400);
|
563
|
-
}
|
564
|
-
|
565
|
-
function moveUp(){
|
566
|
-
var p = selectedNode.previousSibling;
|
567
|
-
while (p && p.style.display == 'none')
|
568
|
-
p = p.previousSibling;
|
569
|
-
if (p && p.nodeName == "LI") {
|
570
|
-
selectNode(p, null);
|
571
|
-
}
|
572
|
-
}
|
573
|
-
|
574
|
-
function moveDown(){
|
575
|
-
var p = selectedNode.nextSibling;
|
576
|
-
while (p && p.style.display == 'none')
|
577
|
-
p = p.nextSibling;
|
578
|
-
if (p && p.nodeName == "LI") {
|
579
|
-
selectNode(p, null);
|
580
|
-
}
|
581
|
-
}
|
582
|
-
|
583
|
-
function moveLeft(){
|
584
|
-
var p = selectedNode.parentNode.parentNode;
|
585
|
-
if (p && p.nodeName=="LI") {
|
586
|
-
selectNode(p, null);
|
587
|
-
}
|
588
|
-
}
|
589
|
-
|
590
|
-
function moveRight(){
|
591
|
-
if (!isLeafNode(selectedNode)) {
|
592
|
-
showChildren(selectedNode);
|
593
|
-
var ul = findUlChild(selectedNode);
|
594
|
-
if (ul) {
|
595
|
-
selectNode(ul.firstChild, null);
|
596
|
-
}
|
597
|
-
}
|
598
|
-
}
|
599
|
-
|
600
|
-
function moveForward(){
|
601
|
-
if (isLeafNode(selectedNode)) {
|
602
|
-
var p = selectedNode;
|
603
|
-
while ((p.nextSibling == null || p.nextSibling.style.display=='none') && p.nodeName=="LI") {
|
604
|
-
p = p.parentNode.parentNode;
|
605
|
-
}
|
606
|
-
if (p.nodeName=="LI")
|
607
|
-
selectNode(p.nextSibling, null);
|
608
|
-
}
|
609
|
-
else {
|
610
|
-
moveRight();
|
611
|
-
}
|
612
|
-
}
|
613
|
-
|
614
|
-
function isExpandedNode(li){
|
615
|
-
var img = li.firstChild;
|
616
|
-
return(img.src.indexOf('minus.png')>-1);
|
617
|
-
}
|
618
|
-
|
619
|
-
function moveBackward(){
|
620
|
-
var p = selectedNode;
|
621
|
-
var q = p.previousSibling;
|
622
|
-
while (q != null && q.style.display=='none')
|
623
|
-
q = q.previousSibling;
|
624
|
-
if (q == null) {
|
625
|
-
p = p.parentNode.parentNode;
|
626
|
-
} else {
|
627
|
-
while (!isLeafNode(q) && isExpandedNode(q)) {
|
628
|
-
q = findUlChild(q).lastChild;
|
629
|
-
while (q.style.display=='none')
|
630
|
-
q = q.previousSibling;
|
631
|
-
}
|
632
|
-
p = q;
|
633
|
-
}
|
634
|
-
if (p.nodeName=="LI")
|
635
|
-
selectNode(p, null);
|
636
|
-
}
|
637
|
-
|
638
|
-
function moveHome() {
|
639
|
-
selectNode(currentThread);
|
640
|
-
}
|
641
|
-
|
642
|
-
var currentThreadIndex = null;
|
643
|
-
|
644
|
-
function findThread(node){
|
645
|
-
while (node && node.parentNode.nodeName!="BODY") {
|
646
|
-
node = node.parentNode;
|
647
|
-
}
|
648
|
-
return node.firstChild;
|
649
|
-
}
|
650
|
-
|
651
|
-
function selectThread(node){
|
652
|
-
var threads = document.getElementsByName("thread");
|
653
|
-
currentThread = node;
|
654
|
-
for (var i=0; i<threads.length; i++) {
|
655
|
-
if (threads[i]==currentThread.parentNode)
|
656
|
-
currentThreadIndex = i;
|
657
|
-
}
|
658
|
-
}
|
659
|
-
|
660
|
-
function nextThread(){
|
661
|
-
var threads = document.getElementsByName("thread");
|
662
|
-
if (currentThreadIndex==threads.length-1)
|
663
|
-
currentThreadIndex = 0;
|
664
|
-
else
|
665
|
-
currentThreadIndex += 1
|
666
|
-
currentThread = threads[currentThreadIndex].firstChild;
|
667
|
-
selectNode(currentThread, null);
|
668
|
-
}
|
669
|
-
|
670
|
-
function previousThread(){
|
671
|
-
var threads = document.getElementsByName("thread");
|
672
|
-
if (currentThreadIndex==0)
|
673
|
-
currentThreadIndex = threads.length-1;
|
674
|
-
else
|
675
|
-
currentThreadIndex -= 1
|
676
|
-
currentThread = threads[currentThreadIndex].firstChild;
|
677
|
-
selectNode(currentThread, null);
|
678
|
-
}
|
679
|
-
|
680
|
-
function switchThread(node, event){
|
681
|
-
event.cancelBubble = true;
|
682
|
-
selectThread(node.nextSibling.firstChild);
|
683
|
-
selectNode(currentThread, null);
|
684
|
-
}
|
685
|
-
|
686
|
-
function handleKeyEvent(event){
|
687
|
-
var code = event.charCode ? event.charCode : event.keyCode;
|
688
|
-
var str = String.fromCharCode(code);
|
689
|
-
switch (str) {
|
690
|
-
case "a": moveLeft(); break;
|
691
|
-
case "s": moveDown(); break;
|
692
|
-
case "d": moveRight(); break;
|
693
|
-
case "w": moveUp(); break;
|
694
|
-
case "f": moveForward(); break;
|
695
|
-
case "b": moveBackward(); break;
|
696
|
-
case "x": toggleChildren(selectedNode.firstChild, event); break;
|
697
|
-
case "*": toggleLI(selectedNode); break;
|
698
|
-
case "n": nextThread(); break;
|
699
|
-
case "h": moveHome(); break;
|
700
|
-
case "p": previousThread(); break;
|
701
|
-
}
|
702
|
-
}
|
703
|
-
document.onkeypress=function(event){ handleKeyEvent(event) };
|
704
|
-
|
705
|
-
window.onload=function(){
|
706
|
-
var images = document.getElementsByTagName("img");
|
707
|
-
for (var i=0; i<images.length; i++) {
|
708
|
-
var img = images[i];
|
709
|
-
if (img.className == "toggle") {
|
710
|
-
img.onclick = function(event){ toggleChildren(this, event); };
|
711
|
-
}
|
712
|
-
}
|
713
|
-
var divs = document.getElementsByTagName("div");
|
714
|
-
for (i=0; i<divs.length; i++) {
|
715
|
-
var div = divs[i];
|
716
|
-
if (div.className == "thread")
|
717
|
-
div.onclick = function(event){ switchThread(this, event) };
|
718
|
-
}
|
719
|
-
var lis = document.getElementsByTagName("li");
|
720
|
-
for (var i=0; i<lis.length; i++) {
|
721
|
-
lis[i].onclick = function(event){ selectNode(this, event); };
|
722
|
-
}
|
723
|
-
var threads = document.getElementsByName("thread");
|
724
|
-
currentThreadIndex = 0;
|
725
|
-
currentThread = threads[0].firstChild;
|
726
|
-
selectNode(currentThread, null);
|
727
|
-
}
|
728
|
-
</script>
|
729
|
-
end_java_script
|
215
|
+
html = open_asset('call_stack_printer.js.html')
|
216
|
+
@output.puts html
|
730
217
|
end
|
731
218
|
|
732
219
|
def print_title_bar
|
@@ -754,17 +241,17 @@ end_commands
|
|
754
241
|
def print_help
|
755
242
|
@output.puts <<-'end_help'
|
756
243
|
<div style="display: none;" id="help">
|
757
|
-
|
758
|
-
to hide all nodes marked with time values lower than <i>d</i>.<br>
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
244
|
+
• Enter a decimal value <i>d</i> into the threshold field and click "Apply"
|
245
|
+
to hide all nodes marked with time values lower than <i>d</i>.<br>
|
246
|
+
• Click on "Expand All" for full tree expansion.<br>
|
247
|
+
• Click on "Collapse All" to show only top level nodes.<br>
|
248
|
+
• Use a, s, d, w as in Quake or Urban Terror to navigate the tree.<br>
|
249
|
+
• Use f and b to navigate the tree in preorder forward and backwards.<br>
|
250
|
+
• Use x to toggle visibility of a subtree.<br>
|
251
|
+
• Use * to expand/collapse a whole subtree.<br>
|
252
|
+
• Use h to navigate to thread root.<br>
|
253
|
+
• Use n and p to navigate between threads.<br>
|
254
|
+
• Click on background to move focus to a subtree.<br>
|
768
255
|
</div>
|
769
256
|
end_help
|
770
257
|
end
|