ruby-prof 0.18.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +23 -0
  3. data/LICENSE +2 -2
  4. data/README.rdoc +1 -483
  5. data/Rakefile +3 -6
  6. data/bin/ruby-prof +65 -30
  7. data/ext/ruby_prof/extconf.rb +6 -38
  8. data/ext/ruby_prof/rp_allocation.c +292 -0
  9. data/ext/ruby_prof/rp_allocation.h +31 -0
  10. data/ext/ruby_prof/rp_call_info.c +137 -279
  11. data/ext/ruby_prof/rp_call_info.h +16 -34
  12. data/ext/ruby_prof/rp_measure_allocations.c +25 -49
  13. data/ext/ruby_prof/rp_measure_memory.c +21 -56
  14. data/ext/ruby_prof/rp_measure_process_time.c +28 -36
  15. data/ext/ruby_prof/rp_measure_wall_time.c +36 -19
  16. data/ext/ruby_prof/rp_measurement.c +236 -0
  17. data/ext/ruby_prof/rp_measurement.h +49 -0
  18. data/ext/ruby_prof/rp_method.c +395 -383
  19. data/ext/ruby_prof/rp_method.h +34 -39
  20. data/ext/ruby_prof/rp_profile.c +881 -0
  21. data/ext/ruby_prof/rp_profile.h +36 -0
  22. data/ext/ruby_prof/rp_stack.c +103 -80
  23. data/ext/ruby_prof/rp_stack.h +5 -12
  24. data/ext/ruby_prof/rp_thread.c +149 -88
  25. data/ext/ruby_prof/rp_thread.h +15 -6
  26. data/ext/ruby_prof/ruby_prof.c +11 -757
  27. data/ext/ruby_prof/ruby_prof.h +4 -47
  28. data/ext/ruby_prof/vc/ruby_prof.vcxproj +10 -8
  29. data/lib/ruby-prof.rb +2 -17
  30. data/lib/ruby-prof/assets/graph_printer.html.erb +356 -0
  31. data/lib/ruby-prof/call_info.rb +35 -93
  32. data/lib/ruby-prof/call_info_visitor.rb +19 -21
  33. data/lib/ruby-prof/compatibility.rb +37 -107
  34. data/lib/ruby-prof/exclude_common_methods.rb +198 -0
  35. data/lib/ruby-prof/measurement.rb +14 -0
  36. data/lib/ruby-prof/method_info.rb +52 -83
  37. data/lib/ruby-prof/printers/abstract_printer.rb +66 -52
  38. data/lib/ruby-prof/printers/call_info_printer.rb +13 -3
  39. data/lib/ruby-prof/printers/call_stack_printer.rb +32 -28
  40. data/lib/ruby-prof/printers/call_tree_printer.rb +20 -12
  41. data/lib/ruby-prof/printers/dot_printer.rb +5 -5
  42. data/lib/ruby-prof/printers/flat_printer.rb +6 -24
  43. data/lib/ruby-prof/printers/graph_html_printer.rb +7 -192
  44. data/lib/ruby-prof/printers/graph_printer.rb +13 -15
  45. data/lib/ruby-prof/printers/multi_printer.rb +66 -23
  46. data/lib/ruby-prof/profile.rb +10 -3
  47. data/lib/ruby-prof/rack.rb +0 -3
  48. data/lib/ruby-prof/thread.rb +12 -12
  49. data/lib/ruby-prof/version.rb +1 -1
  50. data/ruby-prof.gemspec +2 -2
  51. data/test/abstract_printer_test.rb +0 -27
  52. data/test/alias_test.rb +129 -0
  53. data/test/basic_test.rb +41 -40
  54. data/test/call_info_visitor_test.rb +3 -3
  55. data/test/dynamic_method_test.rb +0 -2
  56. data/test/line_number_test.rb +120 -39
  57. data/test/marshal_test.rb +119 -0
  58. data/test/measure_allocations.rb +30 -0
  59. data/test/measure_allocations_test.rb +371 -12
  60. data/test/measure_allocations_trace_test.rb +385 -0
  61. data/test/measure_memory_trace_test.rb +756 -0
  62. data/test/measure_process_time_test.rb +821 -33
  63. data/test/measure_times.rb +54 -0
  64. data/test/measure_wall_time_test.rb +349 -145
  65. data/test/multi_printer_test.rb +1 -34
  66. data/test/parser_timings.rb +24 -0
  67. data/test/pause_resume_test.rb +5 -5
  68. data/test/prime.rb +2 -0
  69. data/test/printer_call_tree_test.rb +31 -0
  70. data/test/printer_flat_test.rb +68 -0
  71. data/test/printer_graph_html_test.rb +60 -0
  72. data/test/printer_graph_test.rb +41 -0
  73. data/test/printers_test.rb +32 -166
  74. data/test/printing_recursive_graph_test.rb +26 -72
  75. data/test/recursive_test.rb +72 -77
  76. data/test/stack_printer_test.rb +2 -15
  77. data/test/start_stop_test.rb +22 -25
  78. data/test/test_helper.rb +5 -248
  79. data/test/thread_test.rb +11 -54
  80. data/test/unique_call_path_test.rb +16 -28
  81. data/test/yarv_test.rb +1 -0
  82. metadata +24 -34
  83. data/examples/flat.txt +0 -50
  84. data/examples/graph.dot +0 -84
  85. data/examples/graph.html +0 -823
  86. data/examples/graph.txt +0 -139
  87. data/examples/multi.flat.txt +0 -23
  88. data/examples/multi.graph.html +0 -760
  89. data/examples/multi.grind.dat +0 -114
  90. data/examples/multi.stack.html +0 -547
  91. data/examples/stack.html +0 -547
  92. data/ext/ruby_prof/rp_measure.c +0 -40
  93. data/ext/ruby_prof/rp_measure.h +0 -45
  94. data/ext/ruby_prof/rp_measure_cpu_time.c +0 -136
  95. data/ext/ruby_prof/rp_measure_gc_runs.c +0 -73
  96. data/ext/ruby_prof/rp_measure_gc_time.c +0 -60
  97. data/lib/ruby-prof/aggregate_call_info.rb +0 -76
  98. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +0 -83
  99. data/lib/ruby-prof/profile/exclude_common_methods.rb +0 -207
  100. data/lib/ruby-prof/profile/legacy_method_elimination.rb +0 -50
  101. data/test/aggregate_test.rb +0 -136
  102. data/test/block_test.rb +0 -74
  103. data/test/call_info_test.rb +0 -78
  104. data/test/fiber_test.rb +0 -79
  105. data/test/issue137_test.rb +0 -63
  106. data/test/measure_cpu_time_test.rb +0 -212
  107. data/test/measure_gc_runs_test.rb +0 -32
  108. data/test/measure_gc_time_test.rb +0 -36
  109. data/test/measure_memory_test.rb +0 -33
  110. data/test/method_elimination_test.rb +0 -84
  111. data/test/module_test.rb +0 -45
  112. data/test/stack_test.rb +0 -138
@@ -1,139 +0,0 @@
1
- = Graph Profiles
2
-
3
- Graph profiles show how long each method runs, which methods call it and which
4
- methods it calls.
5
-
6
- As an example, here is the output from running printers_test.rb:
7
-
8
- Measure Mode: wall_time
9
- Thread ID: 70310439543100
10
- Fiber ID: 70310456289620
11
- Total Time: 0.05264616012573242
12
- Sort by: total_time
13
-
14
- %total %self total self wait child calls name
15
- --------------------------------------------------------------------------------
16
- 100.00% 0.01% 0.053 0.000 0.000 0.053 1 PrintersTest#setup
17
- 0.053 0.000 0.000 0.053 1/1 Object#run_primes
18
- --------------------------------------------------------------------------------
19
- 0.053 0.000 0.000 0.053 1/1 PrintersTest#setup
20
- 99.99% 0.01% 0.053 0.000 0.000 0.053 1 Object#run_primes
21
- 0.052 0.000 0.000 0.052 1/1 Object#find_primes
22
- 0.001 0.000 0.000 0.001 1/1 Object#make_random_array
23
- 0.000 0.000 0.000 0.000 1/1 Object#find_largest
24
- --------------------------------------------------------------------------------
25
- 0.052 0.000 0.000 0.052 1/1 Object#run_primes
26
- 98.35% 0.00% 0.052 0.000 0.000 0.052 1 Object#find_primes
27
- 0.052 0.000 0.000 0.051 1/1 Array#select
28
- --------------------------------------------------------------------------------
29
- 0.052 0.000 0.000 0.051 1/1 Object#find_primes
30
- 98.34% 0.61% 0.052 0.000 0.000 0.051 1 Array#select
31
- 0.051 0.000 0.000 0.051 1000/1000 Object#is_prime
32
- --------------------------------------------------------------------------------
33
- 0.051 0.000 0.000 0.051 1000/1000 Array#select
34
- 97.74% 0.93% 0.051 0.000 0.000 0.051 1000 Object#is_prime
35
- 0.051 0.051 0.000 0.000 1000/1001 Integer#upto
36
- --------------------------------------------------------------------------------
37
- 0.000 0.000 0.000 0.000 1/1001 Object#find_largest
38
- 0.051 0.051 0.000 0.000 1000/1001 Object#is_prime
39
- 96.91% 96.91% 0.051 0.051 0.000 0.000 1001 Integer#upto
40
- --------------------------------------------------------------------------------
41
- 0.001 0.000 0.000 0.001 1/1 Object#run_primes
42
- 1.51% 0.00% 0.001 0.000 0.000 0.001 1 Object#make_random_array
43
- 0.001 0.000 0.000 0.000 1/1 Array#each_index
44
- 0.000 0.000 0.000 0.000 1/1 Class#new
45
- --------------------------------------------------------------------------------
46
- 0.001 0.000 0.000 0.000 1/1 Object#make_random_array
47
- 1.50% 0.56% 0.001 0.000 0.000 0.000 1 Array#each_index
48
- 0.000 0.000 0.000 0.000 1000/1000 Kernel#rand
49
- --------------------------------------------------------------------------------
50
- 0.000 0.000 0.000 0.000 1000/1000 Array#each_index
51
- 0.94% 0.72% 0.000 0.000 0.000 0.000 1000 Kernel#rand
52
- 0.000 0.000 0.000 0.000 1000/1000 Kernel#respond_to_missing?
53
- --------------------------------------------------------------------------------
54
- 0.000 0.000 0.000 0.000 1000/1000 Kernel#rand
55
- 0.22% 0.22% 0.000 0.000 0.000 0.000 1000 Kernel#respond_to_missing?
56
- --------------------------------------------------------------------------------
57
- 0.000 0.000 0.000 0.000 1/1 Object#run_primes
58
- 0.12% 0.02% 0.000 0.000 0.000 0.000 1 Object#find_largest
59
- 0.000 0.000 0.000 0.000 1/1001 Integer#upto
60
- 0.000 0.000 0.000 0.000 1/1 Array#first
61
- --------------------------------------------------------------------------------
62
- 0.000 0.000 0.000 0.000 1/1 Object#make_random_array
63
- 0.01% 0.00% 0.000 0.000 0.000 0.000 1 Class#new
64
- 0.000 0.000 0.000 0.000 1/1 Array#initialize
65
- --------------------------------------------------------------------------------
66
- 0.000 0.000 0.000 0.000 1/1 Class#new
67
- 0.01% 0.01% 0.000 0.000 0.000 0.000 1 Array#initialize
68
- --------------------------------------------------------------------------------
69
- 0.000 0.000 0.000 0.000 1/1 Object#find_largest
70
- 0.00% 0.00% 0.000 0.000 0.000 0.000 1 Array#first
71
-
72
-
73
- == Overview
74
-
75
- Dashed lines divide the report into entries, with one entry per method. Entries
76
- are sorted by total time which is the time spent in the method plus its
77
- children.
78
-
79
- Each entry has a primary line demarked by values in the %total and %self
80
- columns. The primary line represents the method being profiled. Lines above it
81
- are the methods that called this method (parents) while the lines below it are
82
- the methods it called (children).
83
-
84
- All values are in seconds. For the primary line, the columns represent:
85
-
86
- %total - The percentage of time spent in this method and its children
87
- %self - The percentage of time spent in this method
88
- total - The time spent in this method and its children.
89
- self - The time spent in this method.
90
- wait - The time spent waiting for other threads in this method.
91
- child - The time spent in this method's children.
92
- calls - The number of times this method was called.
93
- name - The name of the method.
94
-
95
- The interpretation of method names is:
96
- MyObject#test - An instance method "test" of the class "MyObject"
97
- <Object:MyObject>#test - The <> characters indicate a singleton method on a singleton class.
98
-
99
- For example, we see that 97.74% of the time was spent in Object#is_prime and its
100
- children. Of that time, almost everything was contributed by Integer#upto.
101
- Overall, Integer#upto was called 1001 times and 1000 of those calls were made
102
- by Object#is_prime.
103
-
104
-
105
- == Parents
106
-
107
- In each entry, the lines above the primary line are the methods that called the
108
- current method. If the current method is a root method then no parents are
109
- shown.
110
-
111
- For parent lines, the columns represent:
112
-
113
- total - The time spent in the current method and its children on behalf of the parent method.
114
- self - The time spent in this method on behalf of the parent method.
115
- child - The time spent in this method's children on behalf of the parent.
116
- wait - The time spent waiting for other threads in this method's children on behalf of the parent.
117
- calls - The number of times the parent method called the current method vs. the total number of calls of the current method.
118
-
119
- Looking at the main entry for Integer#upto, we see that it was called 1000 times
120
- from Object#is_prime and 1 time from find_largest.
121
-
122
-
123
- == Children
124
-
125
- In each entry, the lines below the primary line are the methods that
126
- the current method called. If the current method is a leaf method then
127
- no children are shown.
128
-
129
- For children lines, the columns represent:
130
-
131
- total - The time spent in the child, and its descendants, on behalf of the current method
132
- self - The time spent in the child on behalf of the current method.
133
- wait - The time spent waiting for other threads in the child's and its descendants on behalf of the current method.
134
- child - The time spent in the child's descendants on behalf of the current method.
135
- calls - The number of times the child method was called by the current method vs. the total number of calls of the child method.
136
-
137
- If we look at the main entry for Objext#run_primes, we see that it called three
138
- other methods - Object#find_primes, Object#make_random_array and
139
- Object#find_largest.
@@ -1,23 +0,0 @@
1
- Measure Mode: wall_time
2
- Thread ID: 70140045951280
3
- Fiber ID: 70140054192180
4
- Total: 0.002968
5
- Sort by: self_time
6
-
7
- %self total self wait child calls name
8
- 86.99 0.003 0.003 0.000 0.000 201 Integer#upto
9
- 3.11 0.003 0.000 0.000 0.003 200 Object#is_prime
10
- 2.94 0.000 0.000 0.000 0.000 200 Kernel#rand
11
- 2.82 0.003 0.000 0.000 0.003 1 Array#select
12
- 2.37 0.000 0.000 0.000 0.000 1 Array#each_index
13
- 1.02 0.000 0.000 0.000 0.000 200 Kernel#respond_to_missing?
14
- 0.18 0.003 0.000 0.000 0.003 1 PrintersTest#setup
15
- 0.14 0.000 0.000 0.000 0.000 1 Class#new
16
- 0.10 0.000 0.000 0.000 0.000 1 Object#find_largest
17
- 0.10 0.000 0.000 0.000 0.000 1 Object#make_random_array
18
- 0.06 0.003 0.000 0.000 0.003 1 Object#find_primes
19
- 0.06 0.000 0.000 0.000 0.000 1 Array#initialize
20
- 0.06 0.003 0.000 0.000 0.003 1 Object#run_primes
21
- 0.03 0.000 0.000 0.000 0.000 1 Array#first
22
-
23
- * indicates recursively called methods
@@ -1,760 +0,0 @@
1
-
2
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
3
- <html>
4
- <head>
5
- <style media="all" type="text/css">
6
- table {
7
- border-collapse: collapse;
8
- border: 1px solid #CCC;
9
- font-family: Verdana, Arial, Helvetica, sans-serif;
10
- font-size: 9pt;
11
- line-height: normal;
12
- width: 100%;
13
- }
14
-
15
- th {
16
- text-align: center;
17
- border-top: 1px solid #FB7A31;
18
- border-bottom: 1px solid #FB7A31;
19
- background: #FFC;
20
- padding: 0.3em;
21
- border-left: 1px solid silver;
22
- }
23
-
24
- tr.break td {
25
- border: 0;
26
- border-top: 1px solid #FB7A31;
27
- padding: 0;
28
- margin: 0;
29
- }
30
-
31
- tr.method td {
32
- font-weight: bold;
33
- }
34
-
35
- td {
36
- padding: 0.3em;
37
- }
38
-
39
- td:first-child {
40
- width: 190px;
41
- }
42
-
43
- td {
44
- border-left: 1px solid #CCC;
45
- text-align: center;
46
- }
47
-
48
- .method_name {
49
- text-align: left;
50
- }
51
-
52
- tfoot td {
53
- text-align: left;
54
- }
55
- </style>
56
- </head>
57
- <body>
58
- <h1>Profile Report: wall_time</h1>
59
- <!-- Threads Table -->
60
- <table>
61
- <tr>
62
- <th>Thread ID</th>
63
- <th>Fiber ID</th>
64
- <th>Total Time</th>
65
- </tr>
66
-
67
- <tr>
68
- <td>70140045951280</td>
69
- <td><a href="#70140054192180">70140054192180</a></td>
70
- <td>0.0029680728912353516</td>
71
- </tr>
72
-
73
- </table>
74
- <!-- Methods Tables -->
75
-
76
- <h2><a name="70140054192180">Thread 70140045951280, Fiber: 70140054192180</a></h2>
77
- <table>
78
- <thead>
79
- <tr>
80
- <th>%Total</th>
81
- <th>%Self</th>
82
- <th>Total</th>
83
- <th>Self</th>
84
- <th>Wait</th>
85
- <th>Child</th>
86
- <th>Calls</th>
87
- <th class="method_name">Name</th>
88
- <th>Line</th>
89
- </tr>
90
- </thead>
91
- <tbody>
92
-
93
- <!-- Parents -->
94
-
95
- <tr class="method">
96
- <td>100.00%</td>
97
- <td>0.18%</td>
98
- <td>0.00</td>
99
- <td>0.00</td>
100
- <td>0.00</td>
101
- <td>0.00</td>
102
- <td>1</td>
103
- <td class="method_name">
104
- <a name="PrintersTest_setup_70140054192180">
105
- PrintersTest#setup
106
- </a>
107
- </td>
108
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/printers_test.rb&line=14" title="/Users/stefan.kaes/src/ruby-prof/test/printers_test.rb:14">14</a></td>
109
- </tr>
110
- <!-- Children -->
111
-
112
- <tr>
113
- <td>&nbsp;</td>
114
- <td>&nbsp;</td>
115
- <td>0.00</td>
116
- <td>0.00</td>
117
- <td>0.00</td>
118
- <td>0.00</td>
119
- <td>1/1</td>
120
- <td class="method_name"><a href="#Object_run_primes_70140054192180">Object#run_primes</a></td>
121
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/printers_test.rb&line=14" title="/Users/stefan.kaes/src/ruby-prof/test/printers_test.rb:14">14</a></td>
122
- </tr>
123
-
124
- <!-- Create divider row -->
125
- <tr class="break"><td colspan="9"></td></tr>
126
-
127
-
128
- <!-- Parents -->
129
-
130
- <tr>
131
- <td>&nbsp;</td>
132
- <td>&nbsp;</td>
133
- <td>0.00</td>
134
- <td>0.00</td>
135
- <td>0.00</td>
136
- <td>0.00</td>
137
- <td>1/1</td>
138
- <td class="method_name"><a href="#PrintersTest_setup_70140054192180">PrintersTest#setup</a></td>
139
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/printers_test.rb&line=14" title="/Users/stefan.kaes/src/ruby-prof/test/printers_test.rb:14">14</a></td>
140
- </tr>
141
-
142
- <tr class="method">
143
- <td>99.82%</td>
144
- <td>0.06%</td>
145
- <td>0.00</td>
146
- <td>0.00</td>
147
- <td>0.00</td>
148
- <td>0.00</td>
149
- <td>1</td>
150
- <td class="method_name">
151
- <a name="Object_run_primes_70140054192180">
152
- Object#run_primes
153
- </a>
154
- </td>
155
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=45" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:45">45</a></td>
156
- </tr>
157
- <!-- Children -->
158
-
159
- <tr>
160
- <td>&nbsp;</td>
161
- <td>&nbsp;</td>
162
- <td>0.00</td>
163
- <td>0.00</td>
164
- <td>0.00</td>
165
- <td>0.00</td>
166
- <td>1/1</td>
167
- <td class="method_name"><a href="#Object_find_primes_70140054192180">Object#find_primes</a></td>
168
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=50" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:50">50</a></td>
169
- </tr>
170
-
171
- <tr>
172
- <td>&nbsp;</td>
173
- <td>&nbsp;</td>
174
- <td>0.00</td>
175
- <td>0.00</td>
176
- <td>0.00</td>
177
- <td>0.00</td>
178
- <td>1/1</td>
179
- <td class="method_name"><a href="#Object_make_random_array_70140054192180">Object#make_random_array</a></td>
180
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=47" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:47">47</a></td>
181
- </tr>
182
-
183
- <tr>
184
- <td>&nbsp;</td>
185
- <td>&nbsp;</td>
186
- <td>0.00</td>
187
- <td>0.00</td>
188
- <td>0.00</td>
189
- <td>0.00</td>
190
- <td>1/1</td>
191
- <td class="method_name"><a href="#Object_find_largest_70140054192180">Object#find_largest</a></td>
192
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=53" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:53">53</a></td>
193
- </tr>
194
-
195
- <!-- Create divider row -->
196
- <tr class="break"><td colspan="9"></td></tr>
197
-
198
-
199
- <!-- Parents -->
200
-
201
- <tr>
202
- <td>&nbsp;</td>
203
- <td>&nbsp;</td>
204
- <td>0.00</td>
205
- <td>0.00</td>
206
- <td>0.00</td>
207
- <td>0.00</td>
208
- <td>1/1</td>
209
- <td class="method_name"><a href="#Object_run_primes_70140054192180">Object#run_primes</a></td>
210
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=50" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:50">50</a></td>
211
- </tr>
212
-
213
- <tr class="method">
214
- <td>92.62%</td>
215
- <td>0.06%</td>
216
- <td>0.00</td>
217
- <td>0.00</td>
218
- <td>0.00</td>
219
- <td>0.00</td>
220
- <td>1</td>
221
- <td class="method_name">
222
- <a name="Object_find_primes_70140054192180">
223
- Object#find_primes
224
- </a>
225
- </td>
226
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=24" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:24">24</a></td>
227
- </tr>
228
- <!-- Children -->
229
-
230
- <tr>
231
- <td>&nbsp;</td>
232
- <td>&nbsp;</td>
233
- <td>0.00</td>
234
- <td>0.00</td>
235
- <td>0.00</td>
236
- <td>0.00</td>
237
- <td>1/1</td>
238
- <td class="method_name"><a href="#Array_select_70140054192180">Array#select</a></td>
239
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=25" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:25">25</a></td>
240
- </tr>
241
-
242
- <!-- Create divider row -->
243
- <tr class="break"><td colspan="9"></td></tr>
244
-
245
-
246
- <!-- Parents -->
247
-
248
- <tr>
249
- <td>&nbsp;</td>
250
- <td>&nbsp;</td>
251
- <td>0.00</td>
252
- <td>0.00</td>
253
- <td>0.00</td>
254
- <td>0.00</td>
255
- <td>1/1</td>
256
- <td class="method_name"><a href="#Object_find_primes_70140054192180">Object#find_primes</a></td>
257
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=25" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:25">25</a></td>
258
- </tr>
259
-
260
- <tr class="method">
261
- <td>92.55%</td>
262
- <td>2.82%</td>
263
- <td>0.00</td>
264
- <td>0.00</td>
265
- <td>0.00</td>
266
- <td>0.00</td>
267
- <td>1</td>
268
- <td class="method_name">
269
- <a name="Array_select_70140054192180">
270
- Array#select
271
- </a>
272
- </td>
273
- <td></td>
274
- </tr>
275
- <!-- Children -->
276
-
277
- <tr>
278
- <td>&nbsp;</td>
279
- <td>&nbsp;</td>
280
- <td>0.00</td>
281
- <td>0.00</td>
282
- <td>0.00</td>
283
- <td>0.00</td>
284
- <td>200/200</td>
285
- <td class="method_name"><a href="#Object_is_prime_70140054192180">Object#is_prime</a></td>
286
- <td></td>
287
- </tr>
288
-
289
- <!-- Create divider row -->
290
- <tr class="break"><td colspan="9"></td></tr>
291
-
292
-
293
- <!-- Parents -->
294
-
295
- <tr>
296
- <td>&nbsp;</td>
297
- <td>&nbsp;</td>
298
- <td>0.00</td>
299
- <td>0.00</td>
300
- <td>0.00</td>
301
- <td>0.00</td>
302
- <td>200/200</td>
303
- <td class="method_name"><a href="#Array_select_70140054192180">Array#select</a></td>
304
- <td></td>
305
- </tr>
306
-
307
- <tr class="method">
308
- <td>89.73%</td>
309
- <td>3.11%</td>
310
- <td>0.00</td>
311
- <td>0.00</td>
312
- <td>0.00</td>
313
- <td>0.00</td>
314
- <td>200</td>
315
- <td class="method_name">
316
- <a name="Object_is_prime_70140054192180">
317
- Object#is_prime
318
- </a>
319
- </td>
320
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=16" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:16">16</a></td>
321
- </tr>
322
- <!-- Children -->
323
-
324
- <tr>
325
- <td>&nbsp;</td>
326
- <td>&nbsp;</td>
327
- <td>0.00</td>
328
- <td>0.00</td>
329
- <td>0.00</td>
330
- <td>0.00</td>
331
- <td>200/201</td>
332
- <td class="method_name"><a href="#Integer_upto_70140054192180">Integer#upto</a></td>
333
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=18" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:18">18</a></td>
334
- </tr>
335
-
336
- <!-- Create divider row -->
337
- <tr class="break"><td colspan="9"></td></tr>
338
-
339
-
340
- <!-- Parents -->
341
-
342
- <tr>
343
- <td>&nbsp;</td>
344
- <td>&nbsp;</td>
345
- <td>0.00</td>
346
- <td>0.00</td>
347
- <td>0.00</td>
348
- <td>0.00</td>
349
- <td>1/201</td>
350
- <td class="method_name"><a href="#Object_find_largest_70140054192180">Object#find_largest</a></td>
351
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=36" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:36">36</a></td>
352
- </tr>
353
-
354
- <tr>
355
- <td>&nbsp;</td>
356
- <td>&nbsp;</td>
357
- <td>0.00</td>
358
- <td>0.00</td>
359
- <td>0.00</td>
360
- <td>0.00</td>
361
- <td>200/201</td>
362
- <td class="method_name"><a href="#Object_is_prime_70140054192180">Object#is_prime</a></td>
363
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=18" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:18">18</a></td>
364
- </tr>
365
-
366
- <tr class="method">
367
- <td>86.99%</td>
368
- <td>86.99%</td>
369
- <td>0.00</td>
370
- <td>0.00</td>
371
- <td>0.00</td>
372
- <td>0.00</td>
373
- <td>201</td>
374
- <td class="method_name">
375
- <a name="Integer_upto_70140054192180">
376
- Integer#upto
377
- </a>
378
- </td>
379
- <td></td>
380
- </tr>
381
- <!-- Children -->
382
-
383
- <!-- Create divider row -->
384
- <tr class="break"><td colspan="9"></td></tr>
385
-
386
-
387
- <!-- Parents -->
388
-
389
- <tr>
390
- <td>&nbsp;</td>
391
- <td>&nbsp;</td>
392
- <td>0.00</td>
393
- <td>0.00</td>
394
- <td>0.00</td>
395
- <td>0.00</td>
396
- <td>1/1</td>
397
- <td class="method_name"><a href="#Object_run_primes_70140054192180">Object#run_primes</a></td>
398
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=47" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:47">47</a></td>
399
- </tr>
400
-
401
- <tr class="method">
402
- <td>6.64%</td>
403
- <td>0.10%</td>
404
- <td>0.00</td>
405
- <td>0.00</td>
406
- <td>0.00</td>
407
- <td>0.00</td>
408
- <td>1</td>
409
- <td class="method_name">
410
- <a name="Object_make_random_array_70140054192180">
411
- Object#make_random_array
412
- </a>
413
- </td>
414
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=7" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:7">7</a></td>
415
- </tr>
416
- <!-- Children -->
417
-
418
- <tr>
419
- <td>&nbsp;</td>
420
- <td>&nbsp;</td>
421
- <td>0.00</td>
422
- <td>0.00</td>
423
- <td>0.00</td>
424
- <td>0.00</td>
425
- <td>1/1</td>
426
- <td class="method_name"><a href="#Array_each_index_70140054192180">Array#each_index</a></td>
427
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=9" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:9">9</a></td>
428
- </tr>
429
-
430
- <tr>
431
- <td>&nbsp;</td>
432
- <td>&nbsp;</td>
433
- <td>0.00</td>
434
- <td>0.00</td>
435
- <td>0.00</td>
436
- <td>0.00</td>
437
- <td>1/1</td>
438
- <td class="method_name"><a href="#Class_new_70140054192180">Class#new</a></td>
439
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=8" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:8">8</a></td>
440
- </tr>
441
-
442
- <!-- Create divider row -->
443
- <tr class="break"><td colspan="9"></td></tr>
444
-
445
-
446
- <!-- Parents -->
447
-
448
- <tr>
449
- <td>&nbsp;</td>
450
- <td>&nbsp;</td>
451
- <td>0.00</td>
452
- <td>0.00</td>
453
- <td>0.00</td>
454
- <td>0.00</td>
455
- <td>1/1</td>
456
- <td class="method_name"><a href="#Object_make_random_array_70140054192180">Object#make_random_array</a></td>
457
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=9" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:9">9</a></td>
458
- </tr>
459
-
460
- <tr class="method">
461
- <td>6.33%</td>
462
- <td>2.37%</td>
463
- <td>0.00</td>
464
- <td>0.00</td>
465
- <td>0.00</td>
466
- <td>0.00</td>
467
- <td>1</td>
468
- <td class="method_name">
469
- <a name="Array_each_index_70140054192180">
470
- Array#each_index
471
- </a>
472
- </td>
473
- <td></td>
474
- </tr>
475
- <!-- Children -->
476
-
477
- <tr>
478
- <td>&nbsp;</td>
479
- <td>&nbsp;</td>
480
- <td>0.00</td>
481
- <td>0.00</td>
482
- <td>0.00</td>
483
- <td>0.00</td>
484
- <td>200/200</td>
485
- <td class="method_name"><a href="#Kernel_rand_70140054192180">Kernel#rand</a></td>
486
- <td></td>
487
- </tr>
488
-
489
- <!-- Create divider row -->
490
- <tr class="break"><td colspan="9"></td></tr>
491
-
492
-
493
- <!-- Parents -->
494
-
495
- <tr>
496
- <td>&nbsp;</td>
497
- <td>&nbsp;</td>
498
- <td>0.00</td>
499
- <td>0.00</td>
500
- <td>0.00</td>
501
- <td>0.00</td>
502
- <td>200/200</td>
503
- <td class="method_name"><a href="#Array_each_index_70140054192180">Array#each_index</a></td>
504
- <td></td>
505
- </tr>
506
-
507
- <tr class="method">
508
- <td>3.96%</td>
509
- <td>2.94%</td>
510
- <td>0.00</td>
511
- <td>0.00</td>
512
- <td>0.00</td>
513
- <td>0.00</td>
514
- <td>200</td>
515
- <td class="method_name">
516
- <a name="Kernel_rand_70140054192180">
517
- Kernel#rand
518
- </a>
519
- </td>
520
- <td></td>
521
- </tr>
522
- <!-- Children -->
523
-
524
- <tr>
525
- <td>&nbsp;</td>
526
- <td>&nbsp;</td>
527
- <td>0.00</td>
528
- <td>0.00</td>
529
- <td>0.00</td>
530
- <td>0.00</td>
531
- <td>200/200</td>
532
- <td class="method_name"><a href="#Kernel_respond_to_missing__70140054192180">Kernel#respond_to_missing?</a></td>
533
- <td></td>
534
- </tr>
535
-
536
- <!-- Create divider row -->
537
- <tr class="break"><td colspan="9"></td></tr>
538
-
539
-
540
- <!-- Parents -->
541
-
542
- <tr>
543
- <td>&nbsp;</td>
544
- <td>&nbsp;</td>
545
- <td>0.00</td>
546
- <td>0.00</td>
547
- <td>0.00</td>
548
- <td>0.00</td>
549
- <td>200/200</td>
550
- <td class="method_name"><a href="#Kernel_rand_70140054192180">Kernel#rand</a></td>
551
- <td></td>
552
- </tr>
553
-
554
- <tr class="method">
555
- <td>1.02%</td>
556
- <td>1.02%</td>
557
- <td>0.00</td>
558
- <td>0.00</td>
559
- <td>0.00</td>
560
- <td>0.00</td>
561
- <td>200</td>
562
- <td class="method_name">
563
- <a name="Kernel_respond_to_missing__70140054192180">
564
- Kernel#respond_to_missing?
565
- </a>
566
- </td>
567
- <td></td>
568
- </tr>
569
- <!-- Children -->
570
-
571
- <!-- Create divider row -->
572
- <tr class="break"><td colspan="9"></td></tr>
573
-
574
-
575
- <!-- Parents -->
576
-
577
- <tr>
578
- <td>&nbsp;</td>
579
- <td>&nbsp;</td>
580
- <td>0.00</td>
581
- <td>0.00</td>
582
- <td>0.00</td>
583
- <td>0.00</td>
584
- <td>1/1</td>
585
- <td class="method_name"><a href="#Object_run_primes_70140054192180">Object#run_primes</a></td>
586
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=53" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:53">53</a></td>
587
- </tr>
588
-
589
- <tr class="method">
590
- <td>0.51%</td>
591
- <td>0.10%</td>
592
- <td>0.00</td>
593
- <td>0.00</td>
594
- <td>0.00</td>
595
- <td>0.00</td>
596
- <td>1</td>
597
- <td class="method_name">
598
- <a name="Object_find_largest_70140054192180">
599
- Object#find_largest
600
- </a>
601
- </td>
602
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=31" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:31">31</a></td>
603
- </tr>
604
- <!-- Children -->
605
-
606
- <tr>
607
- <td>&nbsp;</td>
608
- <td>&nbsp;</td>
609
- <td>0.00</td>
610
- <td>0.00</td>
611
- <td>0.00</td>
612
- <td>0.00</td>
613
- <td>1/201</td>
614
- <td class="method_name"><a href="#Integer_upto_70140054192180">Integer#upto</a></td>
615
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=36" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:36">36</a></td>
616
- </tr>
617
-
618
- <tr>
619
- <td>&nbsp;</td>
620
- <td>&nbsp;</td>
621
- <td>0.00</td>
622
- <td>0.00</td>
623
- <td>0.00</td>
624
- <td>0.00</td>
625
- <td>1/1</td>
626
- <td class="method_name"><a href="#Array_first_70140054192180">Array#first</a></td>
627
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=32" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:32">32</a></td>
628
- </tr>
629
-
630
- <!-- Create divider row -->
631
- <tr class="break"><td colspan="9"></td></tr>
632
-
633
-
634
- <!-- Parents -->
635
-
636
- <tr>
637
- <td>&nbsp;</td>
638
- <td>&nbsp;</td>
639
- <td>0.00</td>
640
- <td>0.00</td>
641
- <td>0.00</td>
642
- <td>0.00</td>
643
- <td>1/1</td>
644
- <td class="method_name"><a href="#Object_make_random_array_70140054192180">Object#make_random_array</a></td>
645
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=8" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:8">8</a></td>
646
- </tr>
647
-
648
- <tr class="method">
649
- <td>0.20%</td>
650
- <td>0.14%</td>
651
- <td>0.00</td>
652
- <td>0.00</td>
653
- <td>0.00</td>
654
- <td>0.00</td>
655
- <td>1</td>
656
- <td class="method_name">
657
- <a name="Class_new_70140054192180">
658
- Class#new
659
- </a>
660
- </td>
661
- <td></td>
662
- </tr>
663
- <!-- Children -->
664
-
665
- <tr>
666
- <td>&nbsp;</td>
667
- <td>&nbsp;</td>
668
- <td>0.00</td>
669
- <td>0.00</td>
670
- <td>0.00</td>
671
- <td>0.00</td>
672
- <td>1/1</td>
673
- <td class="method_name"><a href="#Array_initialize_70140054192180">Array#initialize</a></td>
674
- <td></td>
675
- </tr>
676
-
677
- <!-- Create divider row -->
678
- <tr class="break"><td colspan="9"></td></tr>
679
-
680
-
681
- <!-- Parents -->
682
-
683
- <tr>
684
- <td>&nbsp;</td>
685
- <td>&nbsp;</td>
686
- <td>0.00</td>
687
- <td>0.00</td>
688
- <td>0.00</td>
689
- <td>0.00</td>
690
- <td>1/1</td>
691
- <td class="method_name"><a href="#Class_new_70140054192180">Class#new</a></td>
692
- <td></td>
693
- </tr>
694
-
695
- <tr class="method">
696
- <td>0.06%</td>
697
- <td>0.06%</td>
698
- <td>0.00</td>
699
- <td>0.00</td>
700
- <td>0.00</td>
701
- <td>0.00</td>
702
- <td>1</td>
703
- <td class="method_name">
704
- <a name="Array_initialize_70140054192180">
705
- Array#initialize
706
- </a>
707
- </td>
708
- <td></td>
709
- </tr>
710
- <!-- Children -->
711
-
712
- <!-- Create divider row -->
713
- <tr class="break"><td colspan="9"></td></tr>
714
-
715
-
716
- <!-- Parents -->
717
-
718
- <tr>
719
- <td>&nbsp;</td>
720
- <td>&nbsp;</td>
721
- <td>0.00</td>
722
- <td>0.00</td>
723
- <td>0.00</td>
724
- <td>0.00</td>
725
- <td>1/1</td>
726
- <td class="method_name"><a href="#Object_find_largest_70140054192180">Object#find_largest</a></td>
727
- <td><a href="txmt://open?url=file:///Users/stefan.kaes/src/ruby-prof/test/prime.rb&line=32" title="/Users/stefan.kaes/src/ruby-prof/test/prime.rb:32">32</a></td>
728
- </tr>
729
-
730
- <tr class="method">
731
- <td>0.03%</td>
732
- <td>0.03%</td>
733
- <td>0.00</td>
734
- <td>0.00</td>
735
- <td>0.00</td>
736
- <td>0.00</td>
737
- <td>1</td>
738
- <td class="method_name">
739
- <a name="Array_first_70140054192180">
740
- Array#first
741
- </a>
742
- </td>
743
- <td></td>
744
- </tr>
745
- <!-- Children -->
746
-
747
- <!-- Create divider row -->
748
- <tr class="break"><td colspan="9"></td></tr>
749
-
750
-
751
- </tbody>
752
- <tfoot>
753
- <tr>
754
- <td colspan="9">* indicates recursively called methods</td>
755
- </tr>
756
- </tfoot>
757
- </table>
758
-
759
- </body>
760
- </html>