ruby-prof 1.7.1 → 1.7.2

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +8 -0
  3. data/ext/ruby_prof/extconf.rb +23 -22
  4. data/ext/ruby_prof/rp_call_trees.c +296 -296
  5. data/ext/ruby_prof/rp_call_trees.h +28 -28
  6. data/ext/ruby_prof/rp_measure_allocations.c +47 -47
  7. data/ext/ruby_prof/rp_measure_process_time.c +64 -66
  8. data/ext/ruby_prof/rp_measure_wall_time.c +52 -64
  9. data/ext/ruby_prof/rp_method.c +551 -551
  10. data/ext/ruby_prof/rp_stack.c +212 -212
  11. data/ext/ruby_prof/ruby_prof.c +50 -50
  12. data/ext/ruby_prof/ruby_prof.h +3 -2
  13. data/ext/ruby_prof/vc/ruby_prof.vcxproj +3 -3
  14. data/lib/ruby-prof/compatibility.rb +113 -113
  15. data/lib/ruby-prof/exclude_common_methods.rb +204 -204
  16. data/lib/ruby-prof/printers/abstract_printer.rb +156 -138
  17. data/lib/ruby-prof/version.rb +3 -3
  18. data/ruby-prof.gemspec +66 -65
  19. data/test/dynamic_method_test.rb +9 -21
  20. data/test/enumerable_test.rb +23 -21
  21. data/test/exclude_methods_test.rb +363 -257
  22. data/test/fiber_test.rb +195 -195
  23. data/test/gc_test.rb +104 -102
  24. data/test/line_number_test.rb +426 -289
  25. data/test/measure_allocations_test.rb +1172 -1081
  26. data/test/measure_memory_test.rb +1193 -1456
  27. data/test/measure_process_time_test.rb +3330 -2477
  28. data/test/measure_wall_time_test.rb +634 -568
  29. data/test/merge_test.rb +146 -146
  30. data/test/method_info_test.rb +100 -95
  31. data/test/printers_test.rb +178 -135
  32. data/test/recursive_test.rb +796 -622
  33. data/test/start_stop_test.rb +4 -4
  34. data/test/test_helper.rb +20 -20
  35. data/test/thread_test.rb +229 -231
  36. data/test/unique_call_path_test.rb +9 -22
  37. data/test/yarv_test.rb +1 -5
  38. metadata +19 -9
  39. data/test/crash2.rb +0 -144
@@ -1,1456 +1,1193 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- require File.expand_path('../test_helper', __FILE__)
5
- require_relative './measure_allocations'
6
-
7
- class MeasureMemoryTest < TestCase
8
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.0')
9
- def test_memory
10
- result = RubyProf::Profile.profile(measure_mode: RubyProf::MEMORY) do
11
- allocator = Allocator.new
12
- allocator.run
13
- end
14
-
15
- thread = result.threads.first
16
-
17
- assert_in_delta(800, thread.total_time, 1)
18
- methods = result.threads.first.methods.sort.reverse
19
- assert_equal(12, methods.length)
20
-
21
- # Method 0
22
- method = methods[0]
23
- assert_equal('MeasureMemoryTest#test_memory', method.full_name)
24
- assert_in_delta(800, method.total_time, 1)
25
-
26
- assert_equal(0.0, method.wait_time)
27
- assert_equal(0.0, method.self_time)
28
- assert_in_delta(800, method.children_time, 1)
29
- assert_equal(0, method.call_trees.callers.length)
30
-
31
- assert_equal(2, method.call_trees.callees.length)
32
- call_tree = method.call_trees.callees[0]
33
- assert_equal('Class#new', call_tree.target.full_name)
34
- assert_equal(40.0, call_tree.total_time)
35
- assert_equal(0.0, call_tree.wait_time)
36
- assert_equal(40.0, call_tree.self_time)
37
- assert_equal(0.0, call_tree.children_time)
38
-
39
- call_tree = method.call_trees.callees[1]
40
- assert_equal('Allocator#run', call_tree.target.full_name)
41
- assert_equal(760.0, call_tree.total_time)
42
- assert_equal(0.0, call_tree.wait_time)
43
- assert_equal(0.0, call_tree.self_time)
44
- assert_equal(760.0, call_tree.children_time)
45
-
46
- # Method 1
47
- method = methods[1]
48
- assert_equal('Allocator#run',method.full_name)
49
- assert_equal(760.0, method.total_time)
50
- assert_equal(0.0, method.wait_time)
51
- assert_equal(0.0, method.self_time)
52
- assert_equal(760.0, method.children_time)
53
-
54
- assert_equal(1, method.call_trees.callers.length)
55
- call_tree = method.call_trees.callers[0]
56
- assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
57
- assert_equal(760.0, call_tree.total_time)
58
- assert_equal(0.0, call_tree.wait_time)
59
- assert_equal(0.0, call_tree.self_time)
60
- assert_equal(760.0, call_tree.children_time)
61
-
62
- assert_equal(3, method.call_trees.callees.length)
63
- call_tree = method.call_trees.callees[0]
64
- assert_equal('Allocator#make_arrays', call_tree.target.full_name)
65
- assert_equal(400.0, call_tree.total_time)
66
- assert_equal(0.0, call_tree.wait_time)
67
- assert_equal(0.0, call_tree.self_time)
68
- assert_equal(400.0, call_tree.children_time)
69
-
70
- call_tree = method.call_trees.callees[1]
71
- assert_equal('Allocator#make_hashes', call_tree.target.full_name)
72
- assert_equal(200.0, call_tree.total_time)
73
- assert_equal(0.0, call_tree.wait_time)
74
- assert_equal(0.0, call_tree.self_time)
75
- assert_equal(200.0, call_tree.children_time)
76
-
77
- call_tree = method.call_trees.callees[2]
78
- assert_equal('Allocator#make_strings', call_tree.target.full_name)
79
- assert_equal(160.0, call_tree.total_time)
80
- assert_equal(0.0, call_tree.wait_time)
81
- assert_equal(40, call_tree.self_time)
82
- assert_equal(120.0, call_tree.children_time)
83
-
84
- # Method 2
85
- method = methods[2]
86
- assert_equal('Class#new', method.full_name)
87
- assert_equal(720.0, method.total_time)
88
- assert_equal(0.0, method.wait_time)
89
- assert_equal(680.0, method.self_time)
90
- assert_equal(40.0, method.children_time)
91
-
92
- assert_equal(4, method.call_trees.callers.length)
93
- call_tree = method.call_trees.callers[0]
94
- assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
95
- assert_equal(40.0, call_tree.total_time)
96
- assert_equal(0.0, call_tree.wait_time)
97
- assert_equal(40.0, call_tree.self_time)
98
- assert_equal(0.0, call_tree.children_time)
99
-
100
- call_tree = method.call_trees.callers[1]
101
- assert_equal('Integer#times', call_tree.parent.target.full_name)
102
- assert_equal(400.0, call_tree.total_time)
103
- assert_equal(0.0, call_tree.wait_time)
104
- assert_equal(400.0, call_tree.self_time)
105
- assert_equal(0.0, call_tree.children_time)
106
-
107
- call_tree = method.call_trees.callers[2]
108
- assert_equal('Allocator#make_hashes', call_tree.parent.target.full_name)
109
- assert_equal(200.0, call_tree.total_time)
110
- assert_equal(0.0, call_tree.wait_time)
111
- assert_equal(200.0, call_tree.self_time)
112
- assert_equal(0.0, call_tree.children_time)
113
-
114
- call_tree = method.call_trees.callers[3]
115
- assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
116
- assert_equal(80.0, call_tree.total_time)
117
- assert_equal(0.0, call_tree.wait_time)
118
- assert_equal(40.0, call_tree.self_time)
119
- assert_equal(40.0, call_tree.children_time)
120
-
121
- assert_equal(4, method.call_trees.callees.length)
122
- call_tree = method.call_trees.callees[0]
123
- assert_equal('BasicObject#initialize', call_tree.target.full_name)
124
- assert_equal(0.0, call_tree.total_time)
125
- assert_equal(0.0, call_tree.wait_time)
126
- assert_equal(0.0, call_tree.self_time)
127
- assert_equal(0.0, call_tree.children_time)
128
-
129
- call_tree = method.call_trees.callees[1]
130
- assert_equal('Array#initialize', call_tree.target.full_name)
131
- assert_equal(0.0, call_tree.total_time)
132
- assert_equal(0.0, call_tree.wait_time)
133
- assert_equal(0.0, call_tree.self_time)
134
- assert_equal(0.0, call_tree.children_time)
135
-
136
- call_tree = method.call_trees.callees[2]
137
- assert_equal('Hash#initialize', call_tree.target.full_name)
138
- assert_equal(0.0, call_tree.total_time)
139
- assert_equal(0.0, call_tree.wait_time)
140
- assert_equal(0.0, call_tree.self_time)
141
- assert_equal(0.0, call_tree.children_time)
142
-
143
- call_tree = method.call_trees.callees[3]
144
- assert_equal('String#initialize', call_tree.target.full_name)
145
- assert_equal(40.0, call_tree.total_time)
146
- assert_equal(0.0, call_tree.wait_time)
147
- assert_equal(40.0, call_tree.self_time)
148
- assert_equal(0.0, call_tree.children_time)
149
-
150
- # Method 3
151
- method = methods[3]
152
- assert_equal('Allocator#make_arrays', method.full_name)
153
- assert_equal(400.0, method.total_time)
154
- assert_equal(0.0, method.wait_time)
155
- assert_equal(0.0, method.self_time)
156
- assert_equal(400.0, method.children_time)
157
-
158
- assert_equal(1, method.call_trees.callers.length)
159
- call_tree = method.call_trees.callers[0]
160
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
161
- assert_equal(400.0, call_tree.total_time)
162
- assert_equal(0.0, call_tree.wait_time)
163
- assert_equal(0.0, call_tree.self_time)
164
- assert_equal(400.0, call_tree.children_time)
165
-
166
- assert_equal(1, method.call_trees.callees.length)
167
- call_tree = method.call_trees.callees[0]
168
- assert_equal('Integer#times', call_tree.target.full_name)
169
- assert_equal(400.0, call_tree.total_time)
170
- assert_equal(0.0, call_tree.wait_time)
171
- assert_equal(0.0, call_tree.self_time)
172
- assert_equal(400.0, call_tree.children_time)
173
-
174
- # Method 4
175
- method = methods[4]
176
- assert_equal('Integer#times', method.full_name)
177
- assert_equal(400.0, method.total_time)
178
- assert_equal(0.0, method.wait_time)
179
- assert_equal(0.0, method.self_time)
180
- assert_equal(400.0, method.children_time)
181
-
182
- assert_equal(1, method.call_trees.callers.length)
183
- call_tree = method.call_trees.callers[0]
184
- assert_equal('Allocator#make_arrays', call_tree.parent.target.full_name)
185
- assert_equal(400.0, call_tree.total_time)
186
- assert_equal(0.0, call_tree.wait_time)
187
- assert_equal(0.0, call_tree.self_time)
188
- assert_equal(400.0, call_tree.children_time)
189
-
190
- assert_equal(1, method.call_trees.callees.length)
191
- call_tree = method.call_trees.callees[0]
192
- assert_equal('Class#new', call_tree.target.full_name)
193
- assert_equal(400.0, call_tree.total_time)
194
- assert_equal(0.0, call_tree.wait_time)
195
- assert_equal(400.0, call_tree.self_time)
196
- assert_equal(0.0, call_tree.children_time)
197
-
198
- # Method 5
199
- method = methods[5]
200
- assert_equal('Allocator#make_hashes', method.full_name)
201
- assert_equal(200.0, method.total_time)
202
- assert_equal(0.0, method.wait_time)
203
- assert_equal(0.0, method.self_time)
204
- assert_equal(200.0, method.children_time)
205
-
206
- assert_equal(1, method.call_trees.callers.length)
207
- call_tree = method.call_trees.callers[0]
208
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
209
- assert_equal(200.0, call_tree.total_time)
210
- assert_equal(0.0, call_tree.wait_time)
211
- assert_equal(0.0, call_tree.self_time)
212
- assert_equal(200.0, call_tree.children_time)
213
-
214
- assert_equal(1, method.call_trees.callees.length)
215
- call_tree = method.call_trees.callees[0]
216
- assert_equal('Class#new', call_tree.target.full_name)
217
- assert_equal(200.0, call_tree.total_time)
218
- assert_equal(0.0, call_tree.wait_time)
219
- assert_equal(200.0, call_tree.self_time)
220
- assert_equal(0.0, call_tree.children_time)
221
-
222
- # Method 6
223
- method = methods[6]
224
- assert_equal('Allocator#make_strings', method.full_name)
225
- assert_equal(160.0, method.total_time)
226
- assert_equal(0.0, method.wait_time)
227
- assert_equal(40.0, method.self_time)
228
- assert_equal(120.0, method.children_time)
229
-
230
- assert_equal(1, method.call_trees.callers.length)
231
- call_tree = method.call_trees.callers[0]
232
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
233
- assert_equal(160.0, call_tree.total_time)
234
- assert_equal(0.0, call_tree.wait_time)
235
- assert_equal(40.0, call_tree.self_time)
236
- assert_equal(120.0, call_tree.children_time)
237
-
238
- assert_equal(2, method.call_trees.callees.length)
239
- call_tree = method.call_trees.callees[0]
240
- assert_equal('String#*', call_tree.target.full_name)
241
- assert_equal(40.0, call_tree.total_time)
242
- assert_equal(0.0, call_tree.wait_time)
243
- assert_equal(40.0, call_tree.self_time)
244
- assert_equal(0.0, call_tree.children_time)
245
-
246
- call_tree = method.call_trees.callees[1]
247
- assert_equal('Class#new', call_tree.target.full_name)
248
- assert_equal(80.0, call_tree.total_time)
249
- assert_equal(0.0, call_tree.wait_time)
250
- assert_equal(40.0, call_tree.self_time)
251
- assert_equal(40.0, call_tree.children_time)
252
-
253
- # Method 7
254
- method = methods[7]
255
- assert_equal('String#*', method.full_name)
256
- assert_equal(40.0, method.total_time)
257
- assert_equal(0.0, method.wait_time)
258
- assert_equal(40.0, method.self_time)
259
- assert_equal(0.0, method.children_time)
260
-
261
- assert_equal(1, method.call_trees.callers.length)
262
- call_tree = method.call_trees.callers[0]
263
- assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
264
- assert_equal(40.0, call_tree.total_time)
265
- assert_equal(0.0, call_tree.wait_time)
266
- assert_equal(40.0, call_tree.self_time)
267
- assert_equal(0.0, call_tree.children_time)
268
-
269
- assert_equal(0.0, method.call_trees.callees.length)
270
-
271
- # Method 8
272
- method = methods[8]
273
- assert_equal('String#initialize', method.full_name)
274
- assert_equal(40.0, method.total_time)
275
- assert_equal(0.0, method.wait_time)
276
- assert_equal(40.0, method.self_time)
277
- assert_equal(0.0, method.children_time)
278
-
279
- assert_equal(1, method.call_trees.callers.length)
280
- call_tree = method.call_trees.callers[0]
281
- assert_equal('Class#new', call_tree.parent.target.full_name)
282
- assert_equal(40.0, call_tree.total_time)
283
- assert_equal(0.0, call_tree.wait_time)
284
- assert_equal(40.0, call_tree.self_time)
285
- assert_equal(0.0, call_tree.children_time)
286
-
287
- assert_equal(0.0, method.call_trees.callees.length)
288
-
289
- # Method 9
290
- method = methods[9]
291
- assert_equal('BasicObject#initialize', method.full_name)
292
- assert_equal(0.0, method.total_time)
293
- assert_equal(0.0, method.wait_time)
294
- assert_equal(0.0, method.self_time)
295
- assert_equal(0.0, method.children_time)
296
-
297
- assert_equal(1, method.call_trees.callers.length)
298
- call_tree = method.call_trees.callers[0]
299
- assert_equal('Class#new', call_tree.parent.target.full_name)
300
- assert_equal(0.0, call_tree.total_time)
301
- assert_equal(0.0, call_tree.wait_time)
302
- assert_equal(0.0, call_tree.self_time)
303
- assert_equal(0.0, call_tree.children_time)
304
-
305
- assert_equal(0.0, method.call_trees.callees.length)
306
-
307
- # Method 10
308
- method = methods[10]
309
- assert_equal('Hash#initialize', method.full_name)
310
- assert_equal(0.0, method.total_time)
311
- assert_equal(0.0, method.wait_time)
312
- assert_equal(0.0, method.self_time)
313
- assert_equal(0.0, method.children_time)
314
-
315
- assert_equal(1, method.call_trees.callers.length)
316
- call_tree = method.call_trees.callers[0]
317
- assert_equal('Class#new', call_tree.parent.target.full_name)
318
- assert_equal(0.0, call_tree.total_time)
319
- assert_equal(0.0, call_tree.wait_time)
320
- assert_equal(0.0, call_tree.self_time)
321
- assert_equal(0.0, call_tree.children_time)
322
-
323
- assert_equal(0.0, method.call_trees.callees.length)
324
-
325
- # Method 11
326
- method = methods[11]
327
- assert_equal('Array#initialize', method.full_name)
328
- assert_equal(0.0, method.total_time)
329
- assert_equal(0.0, method.wait_time)
330
- assert_equal(0.0, method.self_time)
331
- assert_equal(0.0, method.children_time)
332
-
333
- assert_equal(1, method.call_trees.callers.length)
334
- call_tree = method.call_trees.callers[0]
335
- assert_equal('Class#new', call_tree.parent.target.full_name)
336
- assert_equal(0.0, call_tree.total_time)
337
- assert_equal(0.0, call_tree.wait_time)
338
- assert_equal(0.0, call_tree.self_time)
339
- assert_equal(0.0, call_tree.children_time)
340
-
341
- assert_equal(0.0, method.call_trees.callees.length)
342
- end
343
- elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.2')
344
- def test_memory
345
- result = RubyProf::Profile.profile(measure_mode: RubyProf::MEMORY) do
346
- allocator = Allocator.new
347
- allocator.run
348
- end
349
-
350
- thread = result.threads.first
351
-
352
- assert_in_delta(800, thread.total_time, 1)
353
- methods = result.threads.first.methods.sort.reverse
354
- assert_equal(12, methods.length)
355
-
356
- # Method 0
357
- method = methods[0]
358
- assert_equal('MeasureMemoryTest#test_memory', method.full_name)
359
- assert_in_delta(800, method.total_time, 1)
360
-
361
- assert_equal(0.0, method.wait_time)
362
- assert_equal(0.0, method.self_time)
363
- assert_in_delta(800, method.children_time, 1)
364
- assert_equal(0, method.call_trees.callers.length)
365
-
366
- assert_equal(2, method.call_trees.callees.length)
367
- call_tree = method.call_trees.callees[0]
368
- assert_equal('Class#new', call_tree.target.full_name)
369
- assert_equal(40.0, call_tree.total_time)
370
- assert_equal(0.0, call_tree.wait_time)
371
- assert_equal(40.0, call_tree.self_time)
372
- assert_equal(0.0, call_tree.children_time)
373
-
374
- call_tree = method.call_trees.callees[1]
375
- assert_equal('Allocator#run', call_tree.target.full_name)
376
- assert_equal(760.0, call_tree.total_time)
377
- assert_equal(0.0, call_tree.wait_time)
378
- assert_equal(0.0, call_tree.self_time)
379
- assert_equal(760.0, call_tree.children_time)
380
-
381
- # Method 1
382
- method = methods[1]
383
- assert_equal('Allocator#run',method.full_name)
384
- assert_equal(760.0, method.total_time)
385
- assert_equal(0.0, method.wait_time)
386
- assert_equal(0.0, method.self_time)
387
- assert_equal(760.0, method.children_time)
388
-
389
- assert_equal(1, method.call_trees.callers.length)
390
- call_tree = method.call_trees.callers[0]
391
- assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
392
- assert_equal(760.0, call_tree.total_time)
393
- assert_equal(0.0, call_tree.wait_time)
394
- assert_equal(0.0, call_tree.self_time)
395
- assert_equal(760.0, call_tree.children_time)
396
-
397
- assert_equal(3, method.call_trees.callees.length)
398
- call_tree = method.call_trees.callees[0]
399
- assert_equal('Allocator#make_arrays', call_tree.target.full_name)
400
- assert_equal(400.0, call_tree.total_time)
401
- assert_equal(0.0, call_tree.wait_time)
402
- assert_equal(0.0, call_tree.self_time)
403
- assert_equal(400.0, call_tree.children_time)
404
-
405
- call_tree = method.call_trees.callees[1]
406
- assert_equal('Allocator#make_hashes', call_tree.target.full_name)
407
- assert_equal(200.0, call_tree.total_time)
408
- assert_equal(0.0, call_tree.wait_time)
409
- assert_equal(0.0, call_tree.self_time)
410
- assert_equal(200.0, call_tree.children_time)
411
-
412
- call_tree = method.call_trees.callees[2]
413
- assert_equal('Allocator#make_strings', call_tree.target.full_name)
414
- assert_equal(160.0, call_tree.total_time)
415
- assert_equal(0.0, call_tree.wait_time)
416
- assert_equal(40.0, call_tree.self_time)
417
- assert_equal(120.0, call_tree.children_time)
418
-
419
- # Method 2
420
- method = methods[2]
421
- assert_equal('Class#new', method.full_name)
422
- assert_equal(720.0, method.total_time)
423
- assert_equal(0.0, method.wait_time)
424
- assert_equal(680.0, method.self_time)
425
- assert_equal(40.0, method.children_time)
426
-
427
- assert_equal(4, method.call_trees.callers.length)
428
- call_tree = method.call_trees.callers[0]
429
- assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
430
- assert_equal(40.0, call_tree.total_time)
431
- assert_equal(0.0, call_tree.wait_time)
432
- assert_equal(40.0, call_tree.self_time)
433
- assert_equal(0.0, call_tree.children_time)
434
-
435
- call_tree = method.call_trees.callers[1]
436
- assert_equal('Integer#times', call_tree.parent.target.full_name)
437
- assert_equal(400.0, call_tree.total_time)
438
- assert_equal(0.0, call_tree.wait_time)
439
- assert_equal(400.0, call_tree.self_time)
440
- assert_equal(0.0, call_tree.children_time)
441
-
442
- call_tree = method.call_trees.callers[2]
443
- assert_equal('Allocator#make_hashes', call_tree.parent.target.full_name)
444
- assert_equal(200.0, call_tree.total_time)
445
- assert_equal(0.0, call_tree.wait_time)
446
- assert_equal(200.0, call_tree.self_time)
447
- assert_equal(0.0, call_tree.children_time)
448
-
449
- call_tree = method.call_trees.callers[3]
450
- assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
451
- assert_equal(80.0, call_tree.total_time)
452
- assert_equal(0.0, call_tree.wait_time)
453
- assert_equal(40.0, call_tree.self_time)
454
- assert_equal(40.0, call_tree.children_time)
455
-
456
- assert_equal(4, method.call_trees.callees.length)
457
- call_tree = method.call_trees.callees[0]
458
- assert_equal('BasicObject#initialize', call_tree.target.full_name)
459
- assert_equal(0.0, call_tree.total_time)
460
- assert_equal(0.0, call_tree.wait_time)
461
- assert_equal(0.0, call_tree.self_time)
462
- assert_equal(0.0, call_tree.children_time)
463
-
464
- call_tree = method.call_trees.callees[1]
465
- assert_equal('Array#initialize', call_tree.target.full_name)
466
- assert_equal(0.0, call_tree.total_time)
467
- assert_equal(0.0, call_tree.wait_time)
468
- assert_equal(0.0, call_tree.self_time)
469
- assert_equal(0.0, call_tree.children_time)
470
-
471
- call_tree = method.call_trees.callees[2]
472
- assert_equal('Hash#initialize', call_tree.target.full_name)
473
- assert_equal(0.0, call_tree.total_time)
474
- assert_equal(0.0, call_tree.wait_time)
475
- assert_equal(0.0, call_tree.self_time)
476
- assert_equal(0.0, call_tree.children_time)
477
-
478
- call_tree = method.call_trees.callees[3]
479
- assert_equal('String#initialize', call_tree.target.full_name)
480
- assert_equal(40.0, call_tree.total_time)
481
- assert_equal(0.0, call_tree.wait_time)
482
- assert_equal(40.0, call_tree.self_time)
483
- assert_equal(0.0, call_tree.children_time)
484
-
485
- # Method 3
486
- method = methods[3]
487
- assert_equal('Allocator#make_arrays', method.full_name)
488
- assert_equal(400.0, method.total_time)
489
- assert_equal(0.0, method.wait_time)
490
- assert_equal(0.0, method.self_time)
491
- assert_equal(400.0, method.children_time)
492
-
493
- assert_equal(1, method.call_trees.callers.length)
494
- call_tree = method.call_trees.callers[0]
495
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
496
- assert_equal(400.0, call_tree.total_time)
497
- assert_equal(0.0, call_tree.wait_time)
498
- assert_equal(0.0, call_tree.self_time)
499
- assert_equal(400.0, call_tree.children_time)
500
-
501
- assert_equal(1, method.call_trees.callees.length)
502
- call_tree = method.call_trees.callees[0]
503
- assert_equal('Integer#times', call_tree.target.full_name)
504
- assert_equal(400.0, call_tree.total_time)
505
- assert_equal(0.0, call_tree.wait_time)
506
- assert_equal(0.0, call_tree.self_time)
507
- assert_equal(400.0, call_tree.children_time)
508
-
509
- # Method 4
510
- method = methods[4]
511
- assert_equal('Integer#times', method.full_name)
512
- assert_equal(400.0, method.total_time)
513
- assert_equal(0.0, method.wait_time)
514
- assert_equal(0.0, method.self_time)
515
- assert_equal(400.0, method.children_time)
516
-
517
- assert_equal(1, method.call_trees.callers.length)
518
- call_tree = method.call_trees.callers[0]
519
- assert_equal('Allocator#make_arrays', call_tree.parent.target.full_name)
520
- assert_equal(400.0, call_tree.total_time)
521
- assert_equal(0.0, call_tree.wait_time)
522
- assert_equal(0.0, call_tree.self_time)
523
- assert_equal(400.0, call_tree.children_time)
524
-
525
- assert_equal(1, method.call_trees.callees.length)
526
- call_tree = method.call_trees.callees[0]
527
- assert_equal('Class#new', call_tree.target.full_name)
528
- assert_equal(400.0, call_tree.total_time)
529
- assert_equal(0.0, call_tree.wait_time)
530
- assert_equal(400.0, call_tree.self_time)
531
- assert_equal(0.0, call_tree.children_time)
532
-
533
- # Method 5
534
- method = methods[5]
535
- assert_equal('Allocator#make_hashes', method.full_name)
536
- assert_equal(200.0, method.total_time)
537
- assert_equal(0.0, method.wait_time)
538
- assert_equal(0.0, method.self_time)
539
- assert_equal(200.0, method.children_time)
540
-
541
- assert_equal(1, method.call_trees.callers.length)
542
- call_tree = method.call_trees.callers[0]
543
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
544
- assert_equal(200.0, call_tree.total_time)
545
- assert_equal(0.0, call_tree.wait_time)
546
- assert_equal(0.0, call_tree.self_time)
547
- assert_equal(200.0, call_tree.children_time)
548
-
549
- assert_equal(1, method.call_trees.callees.length)
550
- call_tree = method.call_trees.callees[0]
551
- assert_equal('Class#new', call_tree.target.full_name)
552
- assert_equal(200.0, call_tree.total_time)
553
- assert_equal(0.0, call_tree.wait_time)
554
- assert_equal(200.0, call_tree.self_time)
555
- assert_equal(0.0, call_tree.children_time)
556
-
557
- # Method 6
558
- method = methods[6]
559
- assert_equal('Allocator#make_strings', method.full_name)
560
- assert_equal(160.0, method.total_time)
561
- assert_equal(0.0, method.wait_time)
562
- assert_equal(40.0, method.self_time)
563
- assert_equal(120.0, method.children_time)
564
-
565
- assert_equal(1, method.call_trees.callers.length)
566
- call_tree = method.call_trees.callers[0]
567
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
568
- assert_equal(160.0, call_tree.total_time)
569
- assert_equal(0.0, call_tree.wait_time)
570
- assert_equal(40.0, call_tree.self_time)
571
- assert_equal(120.0, call_tree.children_time)
572
-
573
- assert_equal(2, method.call_trees.callees.length)
574
- call_tree = method.call_trees.callees[0]
575
- assert_equal('String#*', call_tree.target.full_name)
576
- assert_equal(40.0, call_tree.total_time)
577
- assert_equal(0.0, call_tree.wait_time)
578
- assert_equal(40.0, call_tree.self_time)
579
- assert_equal(0.0, call_tree.children_time)
580
-
581
- call_tree = method.call_trees.callees[1]
582
- assert_equal('Class#new', call_tree.target.full_name)
583
- assert_equal(80.0, call_tree.total_time)
584
- assert_equal(0.0, call_tree.wait_time)
585
- assert_equal(40.0, call_tree.self_time)
586
- assert_equal(40.0, call_tree.children_time)
587
-
588
- # Method 7
589
- method = methods[7]
590
- assert_equal('String#*', method.full_name)
591
- assert_equal(40.0, method.total_time)
592
- assert_equal(0.0, method.wait_time)
593
- assert_equal(40.0, method.self_time)
594
- assert_equal(0.0, method.children_time)
595
-
596
- assert_equal(1, method.call_trees.callers.length)
597
- call_tree = method.call_trees.callers[0]
598
- assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
599
- assert_equal(40.0, call_tree.total_time)
600
- assert_equal(0.0, call_tree.wait_time)
601
- assert_equal(40.0, call_tree.self_time)
602
- assert_equal(0.0, call_tree.children_time)
603
-
604
- assert_equal(0.0, method.call_trees.callees.length)
605
-
606
- # Method 8
607
- method = methods[8]
608
- assert_equal('String#initialize', method.full_name)
609
- assert_equal(40.0, method.total_time)
610
- assert_equal(0.0, method.wait_time)
611
- assert_equal(40.0, method.self_time)
612
- assert_equal(0.0, method.children_time)
613
-
614
- assert_equal(1, method.call_trees.callers.length)
615
- call_tree = method.call_trees.callers[0]
616
- assert_equal('Class#new', call_tree.parent.target.full_name)
617
- assert_equal(40.0, call_tree.total_time)
618
- assert_equal(0.0, call_tree.wait_time)
619
- assert_equal(40.0, call_tree.self_time)
620
- assert_equal(0.0, call_tree.children_time)
621
-
622
- assert_equal(0.0, method.call_trees.callees.length)
623
-
624
- # Method 9
625
- method = methods[9]
626
- assert_equal('BasicObject#initialize', method.full_name)
627
- assert_equal(0.0, method.total_time)
628
- assert_equal(0.0, method.wait_time)
629
- assert_equal(0.0, method.self_time)
630
- assert_equal(0.0, method.children_time)
631
-
632
- assert_equal(1, method.call_trees.callers.length)
633
- call_tree = method.call_trees.callers[0]
634
- assert_equal('Class#new', call_tree.parent.target.full_name)
635
- assert_equal(0.0, call_tree.total_time)
636
- assert_equal(0.0, call_tree.wait_time)
637
- assert_equal(0.0, call_tree.self_time)
638
- assert_equal(0.0, call_tree.children_time)
639
-
640
- assert_equal(0.0, method.call_trees.callees.length)
641
-
642
- # Method 10
643
- method = methods[10]
644
- assert_equal('Hash#initialize', method.full_name)
645
- assert_equal(0.0, method.total_time)
646
- assert_equal(0.0, method.wait_time)
647
- assert_equal(0.0, method.self_time)
648
- assert_equal(0.0, method.children_time)
649
-
650
- assert_equal(1, method.call_trees.callers.length)
651
- call_tree = method.call_trees.callers[0]
652
- assert_equal('Class#new', call_tree.parent.target.full_name)
653
- assert_equal(0.0, call_tree.total_time)
654
- assert_equal(0.0, call_tree.wait_time)
655
- assert_equal(0.0, call_tree.self_time)
656
- assert_equal(0.0, call_tree.children_time)
657
-
658
- assert_equal(0.0, method.call_trees.callees.length)
659
-
660
- # Method 11
661
- method = methods[11]
662
- assert_equal('Array#initialize', method.full_name)
663
- assert_equal(0.0, method.total_time)
664
- assert_equal(0.0, method.wait_time)
665
- assert_equal(0.0, method.self_time)
666
- assert_equal(0.0, method.children_time)
667
-
668
- assert_equal(1, method.call_trees.callers.length)
669
- call_tree = method.call_trees.callers[0]
670
- assert_equal('Class#new', call_tree.parent.target.full_name)
671
- assert_equal(0.0, call_tree.total_time)
672
- assert_equal(0.0, call_tree.wait_time)
673
- assert_equal(0.0, call_tree.self_time)
674
- assert_equal(0.0, call_tree.children_time)
675
-
676
- assert_equal(0.0, method.call_trees.callees.length)
677
- end
678
- elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.3')
679
- def test_memory
680
- result = RubyProf::Profile.profile(measure_mode: RubyProf::MEMORY) do
681
- allocator = Allocator.new
682
- allocator.run
683
- end
684
-
685
- thread = result.threads.first
686
-
687
- assert_in_delta(1040, thread.total_time, 1)
688
- methods = result.threads.first.methods.sort.reverse
689
- assert_equal(13, methods.length)
690
-
691
- # Method 0
692
- method = methods[0]
693
- assert_equal('MeasureMemoryTest#test_memory', method.full_name)
694
- assert_in_delta(1040, method.total_time, 1)
695
-
696
- assert_equal(0.0, method.wait_time)
697
- assert_equal(0.0, method.self_time)
698
- assert_in_delta(1040, method.children_time, 1)
699
- assert_equal(0, method.call_trees.callers.length)
700
-
701
- assert_equal(2, method.call_trees.callees.length)
702
- call_tree = method.call_trees.callees[0]
703
- assert_equal('Class#new', call_tree.target.full_name)
704
- assert_equal(40.0, call_tree.total_time)
705
- assert_equal(0.0, call_tree.wait_time)
706
- assert_equal(40.0, call_tree.self_time)
707
- assert_equal(0.0, call_tree.children_time)
708
-
709
- call_tree = method.call_trees.callees[1]
710
- assert_equal('Allocator#run', call_tree.target.full_name)
711
- assert_equal(1000.0, call_tree.total_time)
712
- assert_equal(0.0, call_tree.wait_time)
713
- assert_equal(0.0, call_tree.self_time)
714
- assert_equal(1000.0, call_tree.children_time)
715
-
716
- # Method 1
717
- method = methods[1]
718
- assert_equal('Allocator#run',method.full_name)
719
- assert_equal(1000.0, method.total_time)
720
- assert_equal(0.0, method.wait_time)
721
- assert_equal(0.0, method.self_time)
722
- assert_equal(1000.0, method.children_time)
723
-
724
- assert_equal(1, method.call_trees.callers.length)
725
- call_tree = method.call_trees.callers[0]
726
- assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
727
- assert_equal(1000.0, call_tree.total_time)
728
- assert_equal(0.0, call_tree.wait_time)
729
- assert_equal(0.0, call_tree.self_time)
730
- assert_equal(1000.0, call_tree.children_time)
731
-
732
- assert_equal(3, method.call_trees.callees.length)
733
- call_tree = method.call_trees.callees[0]
734
- assert_equal('Allocator#make_arrays', call_tree.target.full_name)
735
- assert_equal(400.0, call_tree.total_time)
736
- assert_equal(0.0, call_tree.wait_time)
737
- assert_equal(0.0, call_tree.self_time)
738
- assert_equal(400.0, call_tree.children_time)
739
-
740
- call_tree = method.call_trees.callees[1]
741
- assert_equal('Allocator#make_hashes', call_tree.target.full_name)
742
- assert_equal(200.0, call_tree.total_time)
743
- assert_equal(0.0, call_tree.wait_time)
744
- assert_equal(0.0, call_tree.self_time)
745
- assert_equal(200.0, call_tree.children_time)
746
-
747
- call_tree = method.call_trees.callees[2]
748
- assert_equal('Allocator#make_strings', call_tree.target.full_name)
749
- assert_equal(400.0, call_tree.total_time)
750
- assert_equal(0.0, call_tree.wait_time)
751
- assert_equal(40.0, call_tree.self_time)
752
- assert_equal(360.0, call_tree.children_time)
753
-
754
- # Method 2
755
- method = methods[2]
756
- assert_equal('Class#new', method.full_name)
757
- assert_equal(440.0, method.total_time)
758
- assert_equal(0.0, method.wait_time)
759
- assert_equal(280.0, method.self_time)
760
- assert_equal(160.0, method.children_time)
761
-
762
- assert_equal(3, method.call_trees.callers.length)
763
- call_tree = method.call_trees.callers[0]
764
- assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
765
- assert_equal(40.0, call_tree.total_time)
766
- assert_equal(0.0, call_tree.wait_time)
767
- assert_equal(40.0, call_tree.self_time)
768
- assert_equal(0.0, call_tree.children_time)
769
-
770
- call_tree = method.call_trees.callers[1]
771
- assert_equal('Allocator#make_hashes', call_tree.parent.target.full_name)
772
- assert_equal(200.0, call_tree.total_time)
773
- assert_equal(0.0, call_tree.wait_time)
774
- assert_equal(200.0, call_tree.self_time)
775
- assert_equal(0.0, call_tree.children_time)
776
-
777
- call_tree = method.call_trees.callers[2]
778
- assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
779
- assert_equal(200.0, call_tree.total_time)
780
- assert_equal(0.0, call_tree.wait_time)
781
- assert_equal(40.0, call_tree.self_time)
782
- assert_equal(160.0, call_tree.children_time)
783
-
784
- assert_equal(3, method.call_trees.callees.length)
785
- call_tree = method.call_trees.callees[0]
786
- assert_equal('BasicObject#initialize', call_tree.target.full_name)
787
- assert_equal(0.0, call_tree.total_time)
788
- assert_equal(0.0, call_tree.wait_time)
789
- assert_equal(0.0, call_tree.self_time)
790
- assert_equal(0.0, call_tree.children_time)
791
-
792
- call_tree = method.call_trees.callees[1]
793
- assert_equal('Hash#initialize', call_tree.target.full_name)
794
- assert_equal(0.0, call_tree.total_time)
795
- assert_equal(0.0, call_tree.wait_time)
796
- assert_equal(0.0, call_tree.self_time)
797
- assert_equal(0.0, call_tree.children_time)
798
-
799
- call_tree = method.call_trees.callees[2]
800
- assert_equal('String#initialize', call_tree.target.full_name)
801
- assert_equal(160.0, call_tree.total_time)
802
- assert_equal(0.0, call_tree.wait_time)
803
- assert_equal(160.0, call_tree.self_time)
804
- assert_equal(0.0, call_tree.children_time)
805
-
806
- # Method 3
807
- method = methods[3]
808
- assert_equal('Allocator#make_strings', method.full_name)
809
- assert_equal(400.0, method.total_time)
810
- assert_equal(0.0, method.wait_time)
811
- assert_equal(40.0, method.self_time)
812
- assert_equal(360.0, method.children_time)
813
-
814
- assert_equal(1, method.call_trees.callers.length)
815
- call_tree = method.call_trees.callers[0]
816
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
817
- assert_equal(400.0, call_tree.total_time)
818
- assert_equal(0.0, call_tree.wait_time)
819
- assert_equal(40.0, call_tree.self_time)
820
- assert_equal(360.0, call_tree.children_time)
821
-
822
- assert_equal(2, method.call_trees.callees.length)
823
- call_tree = method.call_trees.callees[0]
824
- assert_equal('String#*', call_tree.target.full_name)
825
- assert_equal(160.0, call_tree.total_time)
826
- assert_equal(0.0, call_tree.wait_time)
827
- assert_equal(160.0, call_tree.self_time)
828
- assert_equal(0.0, call_tree.children_time)
829
-
830
- call_tree = method.call_trees.callees[1]
831
- assert_equal('Class#new', call_tree.target.full_name)
832
- assert_equal(200.0, call_tree.total_time)
833
- assert_equal(0.0, call_tree.wait_time)
834
- assert_equal(40.0, call_tree.self_time)
835
- assert_equal(160.0, call_tree.children_time)
836
-
837
- # Method 4
838
- method = methods[4]
839
- assert_equal('Allocator#make_arrays', method.full_name)
840
- assert_equal(400.0, method.total_time)
841
- assert_equal(0.0, method.wait_time)
842
- assert_equal(0.0, method.self_time)
843
- assert_equal(400.0, method.children_time)
844
-
845
- assert_equal(1, method.call_trees.callers.length)
846
- call_tree = method.call_trees.callers[0]
847
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
848
- assert_equal(400.0, call_tree.total_time)
849
- assert_equal(0.0, call_tree.wait_time)
850
- assert_equal(0.0, call_tree.self_time)
851
- assert_equal(400.0, call_tree.children_time)
852
-
853
- assert_equal(1, method.call_trees.callees.length)
854
- call_tree = method.call_trees.callees[0]
855
- assert_equal('Integer#times', call_tree.target.full_name)
856
- assert_equal(400.0, call_tree.total_time)
857
- assert_equal(0.0, call_tree.wait_time)
858
- assert_equal(0.0, call_tree.self_time)
859
- assert_equal(400.0, call_tree.children_time)
860
-
861
- # Method 5
862
- method = methods[5]
863
- assert_equal('Integer#times', method.full_name)
864
- assert_equal(400.0, method.total_time)
865
- assert_equal(0.0, method.wait_time)
866
- assert_equal(0.0, method.self_time)
867
- assert_equal(400.0, method.children_time)
868
-
869
- assert_equal(1, method.call_trees.callers.length)
870
- call_tree = method.call_trees.callers[0]
871
- assert_equal('Allocator#make_arrays', call_tree.parent.target.full_name)
872
- assert_equal(400.0, call_tree.total_time)
873
- assert_equal(0.0, call_tree.wait_time)
874
- assert_equal(0.0, call_tree.self_time)
875
- assert_equal(400.0, call_tree.children_time)
876
-
877
- assert_equal(1, method.call_trees.callees.length)
878
- call_tree = method.call_trees.callees[0]
879
- assert_equal('<Class::Array>#new', call_tree.target.full_name)
880
- assert_equal(400.0, call_tree.total_time)
881
- assert_equal(0.0, call_tree.wait_time)
882
- assert_equal(400.0, call_tree.self_time)
883
- assert_equal(0.0, call_tree.children_time)
884
-
885
- # Method 6
886
- method = methods[6]
887
- assert_equal('<Class::Array>#new', method.full_name)
888
- assert_equal(400.0, method.total_time)
889
- assert_equal(0.0, method.wait_time)
890
- assert_equal(400.0, method.self_time)
891
- assert_equal(0.0, method.children_time)
892
-
893
- assert_equal(1, method.call_trees.callers.length)
894
- call_tree = method.call_trees.callers[0]
895
- assert_equal('Integer#times', call_tree.parent.target.full_name)
896
- assert_equal(400.0, call_tree.total_time)
897
- assert_equal(0.0, call_tree.wait_time)
898
- assert_equal(400.0, call_tree.self_time)
899
- assert_equal(0.0, call_tree.children_time)
900
-
901
- assert_equal(1, method.call_trees.callees.length)
902
- call_tree = method.call_trees.callees[0]
903
- assert_equal('Array#initialize', call_tree.target.full_name)
904
- assert_equal(0.0, call_tree.total_time)
905
- assert_equal(0.0, call_tree.wait_time)
906
- assert_equal(0.0, call_tree.self_time)
907
- assert_equal(0.0, call_tree.children_time)
908
-
909
- # Method 7
910
- method = methods[7]
911
- assert_equal('Allocator#make_hashes', method.full_name)
912
- assert_equal(200.0, method.total_time)
913
- assert_equal(0.0, method.wait_time)
914
- assert_equal(0.0, method.self_time)
915
- assert_equal(200.0, method.children_time)
916
-
917
- assert_equal(1, method.call_trees.callers.length)
918
- call_tree = method.call_trees.callers[0]
919
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
920
- assert_equal(200.0, call_tree.total_time)
921
- assert_equal(0.0, call_tree.wait_time)
922
- assert_equal(0.0, call_tree.self_time)
923
- assert_equal(200.0, call_tree.children_time)
924
-
925
- assert_equal(1, method.call_trees.callees.length)
926
- call_tree = method.call_trees.callees[0]
927
- assert_equal('Class#new', call_tree.target.full_name)
928
- assert_equal(200.0, call_tree.total_time)
929
- assert_equal(0.0, call_tree.wait_time)
930
- assert_equal(200.0, call_tree.self_time)
931
- assert_equal(0.0, call_tree.children_time)
932
-
933
- # Method 8
934
- method = methods[8]
935
- assert_equal('String#*', method.full_name)
936
- assert_equal(160.0, method.total_time)
937
- assert_equal(0.0, method.wait_time)
938
- assert_equal(160.0, method.self_time)
939
- assert_equal(0.0, method.children_time)
940
-
941
- assert_equal(1, method.call_trees.callers.length)
942
- call_tree = method.call_trees.callers[0]
943
- assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
944
- assert_equal(160.0, call_tree.total_time)
945
- assert_equal(0.0, call_tree.wait_time)
946
- assert_equal(160.0, call_tree.self_time)
947
- assert_equal(0.0, call_tree.children_time)
948
-
949
- assert_equal(0.0, method.call_trees.callees.length)
950
-
951
- # Method 9
952
- method = methods[9]
953
- assert_equal('String#initialize', method.full_name)
954
- assert_equal(160.0, method.total_time)
955
- assert_equal(0.0, method.wait_time)
956
- assert_equal(160.0, method.self_time)
957
- assert_equal(0.0, method.children_time)
958
-
959
- assert_equal(1, method.call_trees.callers.length)
960
- call_tree = method.call_trees.callers[0]
961
- assert_equal('Class#new', call_tree.parent.target.full_name)
962
- assert_equal(160.0, call_tree.total_time)
963
- assert_equal(0.0, call_tree.wait_time)
964
- assert_equal(160.0, call_tree.self_time)
965
- assert_equal(0.0, call_tree.children_time)
966
-
967
- assert_equal(0.0, method.call_trees.callees.length)
968
-
969
- # Method 10
970
- method = methods[10]
971
- assert_equal('BasicObject#initialize', method.full_name)
972
- assert_equal(0.0, method.total_time)
973
- assert_equal(0.0, method.wait_time)
974
- assert_equal(0.0, method.self_time)
975
- assert_equal(0.0, method.children_time)
976
-
977
- assert_equal(1, method.call_trees.callers.length)
978
- call_tree = method.call_trees.callers[0]
979
- assert_equal('Class#new', call_tree.parent.target.full_name)
980
- assert_equal(0.0, call_tree.total_time)
981
- assert_equal(0.0, call_tree.wait_time)
982
- assert_equal(0.0, call_tree.self_time)
983
- assert_equal(0.0, call_tree.children_time)
984
-
985
- assert_equal(0.0, method.call_trees.callees.length)
986
-
987
- # Method 11
988
- method = methods[11]
989
- assert_equal('Hash#initialize', method.full_name)
990
- assert_equal(0.0, method.total_time)
991
- assert_equal(0.0, method.wait_time)
992
- assert_equal(0.0, method.self_time)
993
- assert_equal(0.0, method.children_time)
994
-
995
- assert_equal(1, method.call_trees.callers.length)
996
- call_tree = method.call_trees.callers[0]
997
- assert_equal('Class#new', call_tree.parent.target.full_name)
998
- assert_equal(0.0, call_tree.total_time)
999
- assert_equal(0.0, call_tree.wait_time)
1000
- assert_equal(0.0, call_tree.self_time)
1001
- assert_equal(0.0, call_tree.children_time)
1002
-
1003
- assert_equal(0.0, method.call_trees.callees.length)
1004
-
1005
- # Method 12
1006
- method = methods[12]
1007
- assert_equal('Array#initialize', method.full_name)
1008
- assert_equal(0.0, method.total_time)
1009
- assert_equal(0.0, method.wait_time)
1010
- assert_equal(0.0, method.self_time)
1011
- assert_equal(0.0, method.children_time)
1012
-
1013
- assert_equal(1, method.call_trees.callers.length)
1014
- call_tree = method.call_trees.callers[0]
1015
- assert_equal('<Class::Array>#new', call_tree.parent.target.full_name)
1016
- assert_equal(0.0, call_tree.total_time)
1017
- assert_equal(0.0, call_tree.wait_time)
1018
- assert_equal(0.0, call_tree.self_time)
1019
- assert_equal(0.0, call_tree.children_time)
1020
-
1021
- assert_equal(0.0, method.call_trees.callees.length)
1022
- end
1023
- else
1024
- def test_memory
1025
- result = RubyProf::Profile.profile(measure_mode: RubyProf::MEMORY) do
1026
- allocator = Allocator.new
1027
- allocator.run
1028
- end
1029
-
1030
- thread = result.threads.first
1031
-
1032
- assert_in_delta(1640, thread.total_time, 1)
1033
- methods = result.threads.first.methods.sort.reverse
1034
- assert_equal(17, methods.length)
1035
-
1036
- # Method 0
1037
- method = methods[0]
1038
- assert_equal('MeasureMemoryTest#test_memory', method.full_name)
1039
- assert_in_delta(1640, method.total_time, 1)
1040
-
1041
- assert_equal(0.0, method.wait_time)
1042
- assert_equal(0.0, method.self_time)
1043
- assert_in_delta(1640, method.children_time, 1)
1044
- assert_equal(0, method.call_trees.callers.length)
1045
-
1046
- assert_equal(2, method.call_trees.callees.length)
1047
- call_tree = method.call_trees.callees[0]
1048
- assert_equal('Class#new', call_tree.target.full_name)
1049
- assert_equal(40.0, call_tree.total_time)
1050
- assert_equal(0.0, call_tree.wait_time)
1051
- assert_equal(40.0, call_tree.self_time)
1052
- assert_equal(0.0, call_tree.children_time)
1053
-
1054
- call_tree = method.call_trees.callees[1]
1055
- assert_equal('Allocator#run', call_tree.target.full_name)
1056
- assert_equal(1600.0, call_tree.total_time)
1057
- assert_equal(0.0, call_tree.wait_time)
1058
- assert_equal(0.0, call_tree.self_time)
1059
- assert_equal(1600.0, call_tree.children_time)
1060
-
1061
- # Method 1
1062
- method = methods[1]
1063
- assert_equal('Allocator#run',method.full_name)
1064
- assert_equal(1600.0, method.total_time)
1065
- assert_equal(0.0, method.wait_time)
1066
- assert_equal(0.0, method.self_time)
1067
- assert_equal(1600.0, method.children_time)
1068
-
1069
- assert_equal(1, method.call_trees.callers.length)
1070
- call_tree = method.call_trees.callers[0]
1071
- assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
1072
- assert_equal(1600.0, call_tree.total_time)
1073
- assert_equal(0.0, call_tree.wait_time)
1074
- assert_equal(0.0, call_tree.self_time)
1075
- assert_equal(1600.0, call_tree.children_time)
1076
-
1077
- assert_equal(3, method.call_trees.callees.length)
1078
- call_tree = method.call_trees.callees[0]
1079
- assert_equal('Allocator#make_arrays', call_tree.target.full_name)
1080
- assert_equal(400.0, call_tree.total_time)
1081
- assert_equal(0.0, call_tree.wait_time)
1082
- assert_equal(0.0, call_tree.self_time)
1083
- assert_equal(400.0, call_tree.children_time)
1084
-
1085
- call_tree = method.call_trees.callees[1]
1086
- assert_equal('Allocator#make_hashes', call_tree.target.full_name)
1087
- assert_equal(800.0, call_tree.total_time)
1088
- assert_equal(0.0, call_tree.wait_time)
1089
- assert_equal(0.0, call_tree.self_time)
1090
- assert_equal(800.0, call_tree.children_time)
1091
-
1092
- call_tree = method.call_trees.callees[2]
1093
- assert_equal('Allocator#make_strings', call_tree.target.full_name)
1094
- assert_equal(400.0, call_tree.total_time)
1095
- assert_equal(0.0, call_tree.wait_time)
1096
- assert_equal(40.0, call_tree.self_time)
1097
- assert_equal(360.0, call_tree.children_time)
1098
-
1099
- # Method 2
1100
- method = methods[2]
1101
- assert_equal('Class#new', method.full_name)
1102
- assert_equal(840.0, method.total_time)
1103
- assert_equal(0.0, method.wait_time)
1104
- assert_equal(840.0, method.self_time)
1105
- assert_equal(0.0, method.children_time)
1106
-
1107
- assert_equal(2, method.call_trees.callers.length)
1108
- call_tree = method.call_trees.callers[0]
1109
- assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
1110
- assert_equal(40.0, call_tree.total_time)
1111
- assert_equal(0.0, call_tree.wait_time)
1112
- assert_equal(40.0, call_tree.self_time)
1113
- assert_equal(0.0, call_tree.children_time)
1114
-
1115
- call_tree = method.call_trees.callers[1]
1116
- assert_equal('Allocator#make_hashes', call_tree.parent.target.full_name)
1117
- assert_equal(800.0, call_tree.total_time)
1118
- assert_equal(0.0, call_tree.wait_time)
1119
- assert_equal(800.0, call_tree.self_time)
1120
- assert_equal(0.0, call_tree.children_time)
1121
-
1122
- assert_equal(2, method.call_trees.callees.length)
1123
- call_tree = method.call_trees.callees[0]
1124
- assert_equal('BasicObject#initialize', call_tree.target.full_name)
1125
- assert_equal(0.0, call_tree.total_time)
1126
- assert_equal(0.0, call_tree.wait_time)
1127
- assert_equal(0.0, call_tree.self_time)
1128
- assert_equal(0.0, call_tree.children_time)
1129
-
1130
- call_tree = method.call_trees.callees[1]
1131
- assert_equal('Hash#initialize', call_tree.target.full_name)
1132
- assert_equal(0.0, call_tree.total_time)
1133
- assert_equal(0.0, call_tree.wait_time)
1134
- assert_equal(0.0, call_tree.self_time)
1135
- assert_equal(0.0, call_tree.children_time)
1136
-
1137
- # Method 3
1138
- method = methods[3]
1139
- assert_equal('Allocator#make_hashes', method.full_name)
1140
- assert_equal(800.0, method.total_time)
1141
- assert_equal(0.0, method.wait_time)
1142
- assert_equal(0.0, method.self_time)
1143
- assert_equal(800.0, method.children_time)
1144
-
1145
- assert_equal(1, method.call_trees.callers.length)
1146
- call_tree = method.call_trees.callers[0]
1147
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
1148
- assert_equal(800.0, call_tree.total_time)
1149
- assert_equal(0.0, call_tree.wait_time)
1150
- assert_equal(0.0, call_tree.self_time)
1151
- assert_equal(800.0, call_tree.children_time)
1152
-
1153
- assert_equal(1, method.call_trees.callees.length)
1154
- call_tree = method.call_trees.callees[0]
1155
- assert_equal('Class#new', call_tree.target.full_name)
1156
- assert_equal(800.0, call_tree.total_time)
1157
- assert_equal(0.0, call_tree.wait_time)
1158
- assert_equal(800.0, call_tree.self_time)
1159
- assert_equal(0.0, call_tree.children_time)
1160
-
1161
- # Method 4
1162
- method = methods[4]
1163
- assert_equal('Allocator#make_strings', method.full_name)
1164
- assert_equal(400.0, method.total_time)
1165
- assert_equal(0.0, method.wait_time)
1166
- assert_equal(40.0, method.self_time)
1167
- assert_equal(360.0, method.children_time)
1168
-
1169
- assert_equal(1, method.call_trees.callers.length)
1170
- call_tree = method.call_trees.callers[0]
1171
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
1172
- assert_equal(400.0, call_tree.total_time)
1173
- assert_equal(0.0, call_tree.wait_time)
1174
- assert_equal(40.0, call_tree.self_time)
1175
- assert_equal(360.0, call_tree.children_time)
1176
-
1177
- assert_equal(2, method.call_trees.callees.length)
1178
- call_tree = method.call_trees.callees[0]
1179
- assert_equal('String#*', call_tree.target.full_name)
1180
- assert_equal(160.0, call_tree.total_time)
1181
- assert_equal(0.0, call_tree.wait_time)
1182
- assert_equal(160.0, call_tree.self_time)
1183
- assert_equal(0.0, call_tree.children_time)
1184
-
1185
- call_tree = method.call_trees.callees[1]
1186
- assert_equal('<Class::String>#new', call_tree.target.full_name)
1187
- assert_equal(200.0, call_tree.total_time)
1188
- assert_equal(0.0, call_tree.wait_time)
1189
- assert_equal(40.0, call_tree.self_time)
1190
- assert_equal(160.0, call_tree.children_time)
1191
-
1192
- # Method 5
1193
- method = methods[5]
1194
- assert_equal('Allocator#make_arrays', method.full_name)
1195
- assert_equal(400.0, method.total_time)
1196
- assert_equal(0.0, method.wait_time)
1197
- assert_equal(0.0, method.self_time)
1198
- assert_equal(400.0, method.children_time)
1199
-
1200
- assert_equal(1, method.call_trees.callers.length)
1201
- call_tree = method.call_trees.callers[0]
1202
- assert_equal('Allocator#run', call_tree.parent.target.full_name)
1203
- assert_equal(400.0, call_tree.total_time)
1204
- assert_equal(0.0, call_tree.wait_time)
1205
- assert_equal(0.0, call_tree.self_time)
1206
- assert_equal(400.0, call_tree.children_time)
1207
-
1208
- assert_equal(1, method.call_trees.callees.length)
1209
- call_tree = method.call_trees.callees[0]
1210
- assert_equal('Integer#times', call_tree.target.full_name)
1211
- assert_equal(400.0, call_tree.total_time)
1212
- assert_equal(0.0, call_tree.wait_time)
1213
- assert_equal(0.0, call_tree.self_time)
1214
- assert_equal(400.0, call_tree.children_time)
1215
-
1216
- # Method 6
1217
- method = methods[6]
1218
- assert_equal('Integer#times', method.full_name)
1219
- assert_equal(400.0, method.total_time)
1220
- assert_equal(0.0, method.wait_time)
1221
- assert_equal(0.0, method.self_time)
1222
- assert_equal(400.0, method.children_time)
1223
-
1224
- assert_equal(1, method.call_trees.callers.length)
1225
- call_tree = method.call_trees.callers[0]
1226
- assert_equal('Allocator#make_arrays', call_tree.parent.target.full_name)
1227
- assert_equal(400.0, call_tree.total_time)
1228
- assert_equal(0.0, call_tree.wait_time)
1229
- assert_equal(0.0, call_tree.self_time)
1230
- assert_equal(400.0, call_tree.children_time)
1231
-
1232
- assert_equal(4, method.call_trees.callees.length)
1233
-
1234
- call_tree = method.call_trees.callees[0]
1235
- assert_equal('Kernel#block_given?', call_tree.target.full_name)
1236
- assert_equal(0, call_tree.total_time)
1237
- assert_equal(0, call_tree.wait_time)
1238
- assert_equal(0, call_tree.self_time)
1239
- assert_equal(0, call_tree.children_time)
1240
-
1241
- call_tree = method.call_trees.callees[1]
1242
- assert_equal('Integer#<', call_tree.target.full_name)
1243
- assert_equal(0, call_tree.total_time)
1244
- assert_equal(0, call_tree.wait_time)
1245
- assert_equal(0, call_tree.self_time)
1246
- assert_equal(0, call_tree.children_time)
1247
-
1248
- call_tree = method.call_trees.callees[2]
1249
- assert_equal('<Class::Array>#new', call_tree.target.full_name)
1250
- assert_equal(400, call_tree.total_time)
1251
- assert_equal(0, call_tree.wait_time)
1252
- assert_equal(400, call_tree.self_time)
1253
- assert_equal(0, call_tree.children_time)
1254
-
1255
- call_tree = method.call_trees.callees[3]
1256
- assert_equal('Integer#succ', call_tree.target.full_name)
1257
- assert_equal(0, call_tree.total_time)
1258
- assert_equal(0, call_tree.wait_time)
1259
- assert_equal(0, call_tree.self_time)
1260
- assert_equal(0, call_tree.children_time)
1261
-
1262
- # Method 7
1263
- method = methods[7]
1264
- assert_equal('<Class::Array>#new', method.full_name)
1265
- assert_equal(400.0, method.total_time)
1266
- assert_equal(0.0, method.wait_time)
1267
- assert_equal(400.0, method.self_time)
1268
- assert_equal(0.0, method.children_time)
1269
-
1270
- assert_equal(1, method.call_trees.callers.length)
1271
- call_tree = method.call_trees.callers[0]
1272
- assert_equal('Integer#times', call_tree.parent.target.full_name)
1273
- assert_equal(400.0, call_tree.total_time)
1274
- assert_equal(0.0, call_tree.wait_time)
1275
- assert_equal(400.0, call_tree.self_time)
1276
- assert_equal(0.0, call_tree.children_time)
1277
-
1278
- assert_equal(1, method.call_trees.callees.length)
1279
- call_tree = method.call_trees.callees[0]
1280
- assert_equal('Array#initialize', call_tree.target.full_name)
1281
- assert_equal(0.0, call_tree.total_time)
1282
- assert_equal(0.0, call_tree.wait_time)
1283
- assert_equal(0.0, call_tree.self_time)
1284
- assert_equal(0.0, call_tree.children_time)
1285
-
1286
- # Method 8
1287
- method = methods[8]
1288
- assert_equal('<Class::String>#new', method.full_name)
1289
- assert_equal(200, method.total_time)
1290
- assert_equal(0, method.wait_time)
1291
- assert_equal(40, method.self_time)
1292
- assert_equal(160, method.children_time)
1293
-
1294
- assert_equal(1, method.call_trees.callers.length)
1295
- call_tree = method.call_trees.callers[0]
1296
- assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
1297
- assert_equal(200, call_tree.total_time)
1298
- assert_equal(0, call_tree.wait_time)
1299
- assert_equal(40, call_tree.self_time)
1300
- assert_equal(160, call_tree.children_time)
1301
-
1302
- assert_equal(1, method.call_trees.callees.length)
1303
-
1304
- call_tree = method.call_trees.callees[0]
1305
- assert_equal('String#initialize', call_tree.target.full_name)
1306
- assert_equal(160, call_tree.total_time)
1307
- assert_equal(0, call_tree.wait_time)
1308
- assert_equal(160, call_tree.self_time)
1309
- assert_equal(0, call_tree.children_time)
1310
-
1311
- # Method 9
1312
- method = methods[9]
1313
- assert_equal('String#*', method.full_name)
1314
- assert_equal(160, method.total_time)
1315
- assert_equal(0, method.wait_time)
1316
- assert_equal(160, method.self_time)
1317
- assert_equal(0, method.children_time)
1318
-
1319
- assert_equal(1, method.call_trees.callers.length)
1320
- call_tree = method.call_trees.callers[0]
1321
- assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
1322
- assert_equal(160, call_tree.total_time)
1323
- assert_equal(0, call_tree.wait_time)
1324
- assert_equal(160, call_tree.self_time)
1325
- assert_equal(0, call_tree.children_time)
1326
-
1327
- assert_equal(0, method.call_trees.callees.length)
1328
-
1329
- # Method 10
1330
- method = methods[10]
1331
- assert_equal('String#initialize', method.full_name)
1332
- assert_equal(160, method.total_time)
1333
- assert_equal(0, method.wait_time)
1334
- assert_equal(160, method.self_time)
1335
- assert_equal(0, method.children_time)
1336
-
1337
- assert_equal(1, method.call_trees.callers.length)
1338
- call_tree = method.call_trees.callers[0]
1339
- assert_equal('<Class::String>#new', call_tree.parent.target.full_name)
1340
- assert_equal(160, call_tree.total_time)
1341
- assert_equal(0, call_tree.wait_time)
1342
- assert_equal(160, call_tree.self_time)
1343
- assert_equal(0, call_tree.children_time)
1344
-
1345
- assert_equal(0, method.call_trees.callees.length)
1346
-
1347
- # Method 11
1348
- method = methods[11]
1349
- assert_equal('BasicObject#initialize', method.full_name)
1350
- assert_equal(0, method.total_time)
1351
- assert_equal(0, method.wait_time)
1352
- assert_equal(0, method.self_time)
1353
- assert_equal(0, method.children_time)
1354
-
1355
- assert_equal(1, method.call_trees.callers.length)
1356
- call_tree = method.call_trees.callers[0]
1357
- assert_equal('Class#new', call_tree.parent.target.full_name)
1358
- assert_equal(0, call_tree.total_time)
1359
- assert_equal(0, call_tree.wait_time)
1360
- assert_equal(0, call_tree.self_time)
1361
- assert_equal(0, call_tree.children_time)
1362
-
1363
- assert_equal(0, method.call_trees.callees.length)
1364
-
1365
- # Method 12
1366
- method = methods[12]
1367
- assert_equal('Kernel#block_given?', method.full_name)
1368
- assert_equal(0, method.total_time)
1369
- assert_equal(0, method.wait_time)
1370
- assert_equal(0, method.self_time)
1371
- assert_equal(0, method.children_time)
1372
-
1373
- assert_equal(1, method.call_trees.callers.length)
1374
- call_tree = method.call_trees.callers[0]
1375
- assert_equal('Integer#times', call_tree.parent.target.full_name)
1376
- assert_equal(0, call_tree.total_time)
1377
- assert_equal(0, call_tree.wait_time)
1378
- assert_equal(0, call_tree.self_time)
1379
- assert_equal(0, call_tree.children_time)
1380
-
1381
- assert_equal(0, method.call_trees.callees.length)
1382
-
1383
- # Method 13
1384
- method = methods[13]
1385
- assert_equal('Integer#succ', method.full_name)
1386
- assert_equal(0, method.total_time)
1387
- assert_equal(0, method.wait_time)
1388
- assert_equal(0, method.self_time)
1389
- assert_equal(0, method.children_time)
1390
-
1391
- assert_equal(1, method.call_trees.callers.length)
1392
- call_tree = method.call_trees.callers[0]
1393
- assert_equal('Integer#times', call_tree.parent.target.full_name)
1394
- assert_equal(0, call_tree.total_time)
1395
- assert_equal(0, call_tree.wait_time)
1396
- assert_equal(0, call_tree.self_time)
1397
- assert_equal(0, call_tree.children_time)
1398
-
1399
- assert_equal(0, method.call_trees.callees.length)
1400
-
1401
- # Method 14
1402
- method = methods[14]
1403
- assert_equal('Integer#<', method.full_name)
1404
- assert_equal(0, method.total_time)
1405
- assert_equal(0, method.wait_time)
1406
- assert_equal(0, method.self_time)
1407
- assert_equal(0, method.children_time)
1408
-
1409
- assert_equal(1, method.call_trees.callers.length)
1410
- call_tree = method.call_trees.callers[0]
1411
- assert_equal('Integer#times', call_tree.parent.target.full_name)
1412
- assert_equal(0, call_tree.total_time)
1413
- assert_equal(0, call_tree.wait_time)
1414
- assert_equal(0, call_tree.self_time)
1415
- assert_equal(0, call_tree.children_time)
1416
-
1417
- assert_equal(0, method.call_trees.callees.length)
1418
-
1419
- # Method 15
1420
- method = methods[15]
1421
- assert_equal('Hash#initialize', method.full_name)
1422
- assert_equal(0.0, method.total_time)
1423
- assert_equal(0.0, method.wait_time)
1424
- assert_equal(0.0, method.self_time)
1425
- assert_equal(0.0, method.children_time)
1426
-
1427
- assert_equal(1, method.call_trees.callers.length)
1428
- call_tree = method.call_trees.callers[0]
1429
- assert_equal('Class#new', call_tree.parent.target.full_name)
1430
- assert_equal(0.0, call_tree.total_time)
1431
- assert_equal(0.0, call_tree.wait_time)
1432
- assert_equal(0.0, call_tree.self_time)
1433
- assert_equal(0.0, call_tree.children_time)
1434
-
1435
- assert_equal(0, method.call_trees.callees.length)
1436
-
1437
- # Method 16
1438
- method = methods[16]
1439
- assert_equal('Array#initialize', method.full_name)
1440
- assert_equal(0.0, method.total_time)
1441
- assert_equal(0.0, method.wait_time)
1442
- assert_equal(0.0, method.self_time)
1443
- assert_equal(0.0, method.children_time)
1444
-
1445
- assert_equal(1, method.call_trees.callers.length)
1446
- call_tree = method.call_trees.callers[0]
1447
- assert_equal('<Class::Array>#new', call_tree.parent.target.full_name)
1448
- assert_equal(0.0, call_tree.total_time)
1449
- assert_equal(0.0, call_tree.wait_time)
1450
- assert_equal(0.0, call_tree.self_time)
1451
- assert_equal(0.0, call_tree.children_time)
1452
-
1453
- assert_equal(0.0, method.call_trees.callees.length)
1454
- end
1455
- end
1456
- end
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require File.expand_path('../test_helper', __FILE__)
5
+ require_relative './measure_allocations'
6
+
7
+ class MeasureMemoryTest < TestCase
8
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.3')
9
+ def test_memory
10
+ result = RubyProf::Profile.profile(measure_mode: RubyProf::MEMORY) do
11
+ allocator = Allocator.new
12
+ allocator.run
13
+ end
14
+
15
+ thread = result.threads.first
16
+
17
+ assert_in_delta(1040, thread.total_time, 1)
18
+ methods = result.threads.first.methods.sort.reverse
19
+ assert_equal(13, methods.length)
20
+
21
+ # Method 0
22
+ method = methods[0]
23
+ assert_equal('MeasureMemoryTest#test_memory', method.full_name)
24
+ assert_in_delta(1040, method.total_time, 1)
25
+
26
+ assert_equal(0.0, method.wait_time)
27
+ assert_equal(0.0, method.self_time)
28
+ assert_in_delta(1040, method.children_time, 1)
29
+ assert_equal(0, method.call_trees.callers.length)
30
+
31
+ assert_equal(2, method.call_trees.callees.length)
32
+ call_tree = method.call_trees.callees[0]
33
+ assert_equal('Class#new', call_tree.target.full_name)
34
+ assert_equal(40.0, call_tree.total_time)
35
+ assert_equal(0.0, call_tree.wait_time)
36
+ assert_equal(40.0, call_tree.self_time)
37
+ assert_equal(0.0, call_tree.children_time)
38
+
39
+ call_tree = method.call_trees.callees[1]
40
+ assert_equal('Allocator#run', call_tree.target.full_name)
41
+ assert_equal(1000.0, call_tree.total_time)
42
+ assert_equal(0.0, call_tree.wait_time)
43
+ assert_equal(0.0, call_tree.self_time)
44
+ assert_equal(1000.0, call_tree.children_time)
45
+
46
+ # Method 1
47
+ method = methods[1]
48
+ assert_equal('Allocator#run',method.full_name)
49
+ assert_equal(1000.0, method.total_time)
50
+ assert_equal(0.0, method.wait_time)
51
+ assert_equal(0.0, method.self_time)
52
+ assert_equal(1000.0, method.children_time)
53
+
54
+ assert_equal(1, method.call_trees.callers.length)
55
+ call_tree = method.call_trees.callers[0]
56
+ assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
57
+ assert_equal(1000.0, call_tree.total_time)
58
+ assert_equal(0.0, call_tree.wait_time)
59
+ assert_equal(0.0, call_tree.self_time)
60
+ assert_equal(1000.0, call_tree.children_time)
61
+
62
+ assert_equal(3, method.call_trees.callees.length)
63
+ call_tree = method.call_trees.callees[0]
64
+ assert_equal('Allocator#make_arrays', call_tree.target.full_name)
65
+ assert_equal(400.0, call_tree.total_time)
66
+ assert_equal(0.0, call_tree.wait_time)
67
+ assert_equal(0.0, call_tree.self_time)
68
+ assert_equal(400.0, call_tree.children_time)
69
+
70
+ call_tree = method.call_trees.callees[1]
71
+ assert_equal('Allocator#make_hashes', call_tree.target.full_name)
72
+ assert_equal(200.0, call_tree.total_time)
73
+ assert_equal(0.0, call_tree.wait_time)
74
+ assert_equal(0.0, call_tree.self_time)
75
+ assert_equal(200.0, call_tree.children_time)
76
+
77
+ call_tree = method.call_trees.callees[2]
78
+ assert_equal('Allocator#make_strings', call_tree.target.full_name)
79
+ assert_equal(400.0, call_tree.total_time)
80
+ assert_equal(0.0, call_tree.wait_time)
81
+ assert_equal(40.0, call_tree.self_time)
82
+ assert_equal(360.0, call_tree.children_time)
83
+
84
+ # Method 2
85
+ method = methods[2]
86
+ assert_equal('Class#new', method.full_name)
87
+ assert_equal(440.0, method.total_time)
88
+ assert_equal(0.0, method.wait_time)
89
+ assert_equal(280.0, method.self_time)
90
+ assert_equal(160.0, method.children_time)
91
+
92
+ assert_equal(3, method.call_trees.callers.length)
93
+ call_tree = method.call_trees.callers[0]
94
+ assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
95
+ assert_equal(40.0, call_tree.total_time)
96
+ assert_equal(0.0, call_tree.wait_time)
97
+ assert_equal(40.0, call_tree.self_time)
98
+ assert_equal(0.0, call_tree.children_time)
99
+
100
+ call_tree = method.call_trees.callers[1]
101
+ assert_equal('Allocator#make_hashes', call_tree.parent.target.full_name)
102
+ assert_equal(200.0, call_tree.total_time)
103
+ assert_equal(0.0, call_tree.wait_time)
104
+ assert_equal(200.0, call_tree.self_time)
105
+ assert_equal(0.0, call_tree.children_time)
106
+
107
+ call_tree = method.call_trees.callers[2]
108
+ assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
109
+ assert_equal(200.0, call_tree.total_time)
110
+ assert_equal(0.0, call_tree.wait_time)
111
+ assert_equal(40.0, call_tree.self_time)
112
+ assert_equal(160.0, call_tree.children_time)
113
+
114
+ assert_equal(3, method.call_trees.callees.length)
115
+ call_tree = method.call_trees.callees[0]
116
+ assert_equal('BasicObject#initialize', call_tree.target.full_name)
117
+ assert_equal(0.0, call_tree.total_time)
118
+ assert_equal(0.0, call_tree.wait_time)
119
+ assert_equal(0.0, call_tree.self_time)
120
+ assert_equal(0.0, call_tree.children_time)
121
+
122
+ call_tree = method.call_trees.callees[1]
123
+ assert_equal('Hash#initialize', call_tree.target.full_name)
124
+ assert_equal(0.0, call_tree.total_time)
125
+ assert_equal(0.0, call_tree.wait_time)
126
+ assert_equal(0.0, call_tree.self_time)
127
+ assert_equal(0.0, call_tree.children_time)
128
+
129
+ call_tree = method.call_trees.callees[2]
130
+ assert_equal('String#initialize', call_tree.target.full_name)
131
+ assert_equal(160.0, call_tree.total_time)
132
+ assert_equal(0.0, call_tree.wait_time)
133
+ assert_equal(160.0, call_tree.self_time)
134
+ assert_equal(0.0, call_tree.children_time)
135
+
136
+ # Method 3
137
+ method = methods[3]
138
+ assert_equal('Allocator#make_strings', method.full_name)
139
+ assert_equal(400.0, method.total_time)
140
+ assert_equal(0.0, method.wait_time)
141
+ assert_equal(40.0, method.self_time)
142
+ assert_equal(360.0, method.children_time)
143
+
144
+ assert_equal(1, method.call_trees.callers.length)
145
+ call_tree = method.call_trees.callers[0]
146
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
147
+ assert_equal(400.0, call_tree.total_time)
148
+ assert_equal(0.0, call_tree.wait_time)
149
+ assert_equal(40.0, call_tree.self_time)
150
+ assert_equal(360.0, call_tree.children_time)
151
+
152
+ assert_equal(2, method.call_trees.callees.length)
153
+ call_tree = method.call_trees.callees[0]
154
+ assert_equal('String#*', call_tree.target.full_name)
155
+ assert_equal(160.0, call_tree.total_time)
156
+ assert_equal(0.0, call_tree.wait_time)
157
+ assert_equal(160.0, call_tree.self_time)
158
+ assert_equal(0.0, call_tree.children_time)
159
+
160
+ call_tree = method.call_trees.callees[1]
161
+ assert_equal('Class#new', call_tree.target.full_name)
162
+ assert_equal(200.0, call_tree.total_time)
163
+ assert_equal(0.0, call_tree.wait_time)
164
+ assert_equal(40.0, call_tree.self_time)
165
+ assert_equal(160.0, call_tree.children_time)
166
+
167
+ # Method 4
168
+ method = methods[4]
169
+ assert_equal('Allocator#make_arrays', method.full_name)
170
+ assert_equal(400.0, method.total_time)
171
+ assert_equal(0.0, method.wait_time)
172
+ assert_equal(0.0, method.self_time)
173
+ assert_equal(400.0, method.children_time)
174
+
175
+ assert_equal(1, method.call_trees.callers.length)
176
+ call_tree = method.call_trees.callers[0]
177
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
178
+ assert_equal(400.0, call_tree.total_time)
179
+ assert_equal(0.0, call_tree.wait_time)
180
+ assert_equal(0.0, call_tree.self_time)
181
+ assert_equal(400.0, call_tree.children_time)
182
+
183
+ assert_equal(1, method.call_trees.callees.length)
184
+ call_tree = method.call_trees.callees[0]
185
+ assert_equal('Integer#times', call_tree.target.full_name)
186
+ assert_equal(400.0, call_tree.total_time)
187
+ assert_equal(0.0, call_tree.wait_time)
188
+ assert_equal(0.0, call_tree.self_time)
189
+ assert_equal(400.0, call_tree.children_time)
190
+
191
+ # Method 5
192
+ method = methods[5]
193
+ assert_equal('Integer#times', method.full_name)
194
+ assert_equal(400.0, method.total_time)
195
+ assert_equal(0.0, method.wait_time)
196
+ assert_equal(0.0, method.self_time)
197
+ assert_equal(400.0, method.children_time)
198
+
199
+ assert_equal(1, method.call_trees.callers.length)
200
+ call_tree = method.call_trees.callers[0]
201
+ assert_equal('Allocator#make_arrays', call_tree.parent.target.full_name)
202
+ assert_equal(400.0, call_tree.total_time)
203
+ assert_equal(0.0, call_tree.wait_time)
204
+ assert_equal(0.0, call_tree.self_time)
205
+ assert_equal(400.0, call_tree.children_time)
206
+
207
+ assert_equal(1, method.call_trees.callees.length)
208
+ call_tree = method.call_trees.callees[0]
209
+ assert_equal('<Class::Array>#new', call_tree.target.full_name)
210
+ assert_equal(400.0, call_tree.total_time)
211
+ assert_equal(0.0, call_tree.wait_time)
212
+ assert_equal(400.0, call_tree.self_time)
213
+ assert_equal(0.0, call_tree.children_time)
214
+
215
+ # Method 6
216
+ method = methods[6]
217
+ assert_equal('<Class::Array>#new', method.full_name)
218
+ assert_equal(400.0, method.total_time)
219
+ assert_equal(0.0, method.wait_time)
220
+ assert_equal(400.0, method.self_time)
221
+ assert_equal(0.0, method.children_time)
222
+
223
+ assert_equal(1, method.call_trees.callers.length)
224
+ call_tree = method.call_trees.callers[0]
225
+ assert_equal('Integer#times', call_tree.parent.target.full_name)
226
+ assert_equal(400.0, call_tree.total_time)
227
+ assert_equal(0.0, call_tree.wait_time)
228
+ assert_equal(400.0, call_tree.self_time)
229
+ assert_equal(0.0, call_tree.children_time)
230
+
231
+ assert_equal(1, method.call_trees.callees.length)
232
+ call_tree = method.call_trees.callees[0]
233
+ assert_equal('Array#initialize', call_tree.target.full_name)
234
+ assert_equal(0.0, call_tree.total_time)
235
+ assert_equal(0.0, call_tree.wait_time)
236
+ assert_equal(0.0, call_tree.self_time)
237
+ assert_equal(0.0, call_tree.children_time)
238
+
239
+ # Method 7
240
+ method = methods[7]
241
+ assert_equal('Allocator#make_hashes', method.full_name)
242
+ assert_equal(200.0, method.total_time)
243
+ assert_equal(0.0, method.wait_time)
244
+ assert_equal(0.0, method.self_time)
245
+ assert_equal(200.0, method.children_time)
246
+
247
+ assert_equal(1, method.call_trees.callers.length)
248
+ call_tree = method.call_trees.callers[0]
249
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
250
+ assert_equal(200.0, call_tree.total_time)
251
+ assert_equal(0.0, call_tree.wait_time)
252
+ assert_equal(0.0, call_tree.self_time)
253
+ assert_equal(200.0, call_tree.children_time)
254
+
255
+ assert_equal(1, method.call_trees.callees.length)
256
+ call_tree = method.call_trees.callees[0]
257
+ assert_equal('Class#new', call_tree.target.full_name)
258
+ assert_equal(200.0, call_tree.total_time)
259
+ assert_equal(0.0, call_tree.wait_time)
260
+ assert_equal(200.0, call_tree.self_time)
261
+ assert_equal(0.0, call_tree.children_time)
262
+
263
+ # Method 8
264
+ method = methods[8]
265
+ assert_equal('String#*', method.full_name)
266
+ assert_equal(160.0, method.total_time)
267
+ assert_equal(0.0, method.wait_time)
268
+ assert_equal(160.0, method.self_time)
269
+ assert_equal(0.0, method.children_time)
270
+
271
+ assert_equal(1, method.call_trees.callers.length)
272
+ call_tree = method.call_trees.callers[0]
273
+ assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
274
+ assert_equal(160.0, call_tree.total_time)
275
+ assert_equal(0.0, call_tree.wait_time)
276
+ assert_equal(160.0, call_tree.self_time)
277
+ assert_equal(0.0, call_tree.children_time)
278
+
279
+ assert_equal(0.0, method.call_trees.callees.length)
280
+
281
+ # Method 9
282
+ method = methods[9]
283
+ assert_equal('String#initialize', method.full_name)
284
+ assert_equal(160.0, method.total_time)
285
+ assert_equal(0.0, method.wait_time)
286
+ assert_equal(160.0, method.self_time)
287
+ assert_equal(0.0, method.children_time)
288
+
289
+ assert_equal(1, method.call_trees.callers.length)
290
+ call_tree = method.call_trees.callers[0]
291
+ assert_equal('Class#new', call_tree.parent.target.full_name)
292
+ assert_equal(160.0, call_tree.total_time)
293
+ assert_equal(0.0, call_tree.wait_time)
294
+ assert_equal(160.0, call_tree.self_time)
295
+ assert_equal(0.0, call_tree.children_time)
296
+
297
+ assert_equal(0.0, method.call_trees.callees.length)
298
+
299
+ # Method 10
300
+ method = methods[10]
301
+ assert_equal('BasicObject#initialize', method.full_name)
302
+ assert_equal(0.0, method.total_time)
303
+ assert_equal(0.0, method.wait_time)
304
+ assert_equal(0.0, method.self_time)
305
+ assert_equal(0.0, method.children_time)
306
+
307
+ assert_equal(1, method.call_trees.callers.length)
308
+ call_tree = method.call_trees.callers[0]
309
+ assert_equal('Class#new', call_tree.parent.target.full_name)
310
+ assert_equal(0.0, call_tree.total_time)
311
+ assert_equal(0.0, call_tree.wait_time)
312
+ assert_equal(0.0, call_tree.self_time)
313
+ assert_equal(0.0, call_tree.children_time)
314
+
315
+ assert_equal(0.0, method.call_trees.callees.length)
316
+
317
+ # Method 11
318
+ method = methods[11]
319
+ assert_equal('Hash#initialize', method.full_name)
320
+ assert_equal(0.0, method.total_time)
321
+ assert_equal(0.0, method.wait_time)
322
+ assert_equal(0.0, method.self_time)
323
+ assert_equal(0.0, method.children_time)
324
+
325
+ assert_equal(1, method.call_trees.callers.length)
326
+ call_tree = method.call_trees.callers[0]
327
+ assert_equal('Class#new', call_tree.parent.target.full_name)
328
+ assert_equal(0.0, call_tree.total_time)
329
+ assert_equal(0.0, call_tree.wait_time)
330
+ assert_equal(0.0, call_tree.self_time)
331
+ assert_equal(0.0, call_tree.children_time)
332
+
333
+ assert_equal(0.0, method.call_trees.callees.length)
334
+
335
+ # Method 12
336
+ method = methods[12]
337
+ assert_equal('Array#initialize', method.full_name)
338
+ assert_equal(0.0, method.total_time)
339
+ assert_equal(0.0, method.wait_time)
340
+ assert_equal(0.0, method.self_time)
341
+ assert_equal(0.0, method.children_time)
342
+
343
+ assert_equal(1, method.call_trees.callers.length)
344
+ call_tree = method.call_trees.callers[0]
345
+ assert_equal('<Class::Array>#new', call_tree.parent.target.full_name)
346
+ assert_equal(0.0, call_tree.total_time)
347
+ assert_equal(0.0, call_tree.wait_time)
348
+ assert_equal(0.0, call_tree.self_time)
349
+ assert_equal(0.0, call_tree.children_time)
350
+
351
+ assert_equal(0.0, method.call_trees.callees.length)
352
+ end
353
+ elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.4')
354
+ def test_memory
355
+ result = RubyProf::Profile.profile(measure_mode: RubyProf::MEMORY) do
356
+ allocator = Allocator.new
357
+ allocator.run
358
+ end
359
+
360
+ thread = result.threads.first
361
+
362
+ assert_in_delta(1640, thread.total_time, 1)
363
+ methods = result.threads.first.methods.sort.reverse
364
+ assert_equal(17, methods.length)
365
+
366
+ # Method 0
367
+ method = methods[0]
368
+ assert_equal('MeasureMemoryTest#test_memory', method.full_name)
369
+ assert_in_delta(1640, method.total_time, 1)
370
+
371
+ assert_equal(0.0, method.wait_time)
372
+ assert_equal(0.0, method.self_time)
373
+ assert_in_delta(1640, method.children_time, 1)
374
+ assert_equal(0, method.call_trees.callers.length)
375
+
376
+ assert_equal(2, method.call_trees.callees.length)
377
+ call_tree = method.call_trees.callees[0]
378
+ assert_equal('Class#new', call_tree.target.full_name)
379
+ assert_equal(40.0, call_tree.total_time)
380
+ assert_equal(0.0, call_tree.wait_time)
381
+ assert_equal(40.0, call_tree.self_time)
382
+ assert_equal(0.0, call_tree.children_time)
383
+
384
+ call_tree = method.call_trees.callees[1]
385
+ assert_equal('Allocator#run', call_tree.target.full_name)
386
+ assert_equal(1600.0, call_tree.total_time)
387
+ assert_equal(0.0, call_tree.wait_time)
388
+ assert_equal(0.0, call_tree.self_time)
389
+ assert_equal(1600.0, call_tree.children_time)
390
+
391
+ # Method 1
392
+ method = methods[1]
393
+ assert_equal('Allocator#run',method.full_name)
394
+ assert_equal(1600.0, method.total_time)
395
+ assert_equal(0.0, method.wait_time)
396
+ assert_equal(0.0, method.self_time)
397
+ assert_equal(1600.0, method.children_time)
398
+
399
+ assert_equal(1, method.call_trees.callers.length)
400
+ call_tree = method.call_trees.callers[0]
401
+ assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
402
+ assert_equal(1600.0, call_tree.total_time)
403
+ assert_equal(0.0, call_tree.wait_time)
404
+ assert_equal(0.0, call_tree.self_time)
405
+ assert_equal(1600.0, call_tree.children_time)
406
+
407
+ assert_equal(3, method.call_trees.callees.length)
408
+ call_tree = method.call_trees.callees[0]
409
+ assert_equal('Allocator#make_arrays', call_tree.target.full_name)
410
+ assert_equal(400.0, call_tree.total_time)
411
+ assert_equal(0.0, call_tree.wait_time)
412
+ assert_equal(0.0, call_tree.self_time)
413
+ assert_equal(400.0, call_tree.children_time)
414
+
415
+ call_tree = method.call_trees.callees[1]
416
+ assert_equal('Allocator#make_hashes', call_tree.target.full_name)
417
+ assert_equal(800.0, call_tree.total_time)
418
+ assert_equal(0.0, call_tree.wait_time)
419
+ assert_equal(0.0, call_tree.self_time)
420
+ assert_equal(800.0, call_tree.children_time)
421
+
422
+ call_tree = method.call_trees.callees[2]
423
+ assert_equal('Allocator#make_strings', call_tree.target.full_name)
424
+ assert_equal(400.0, call_tree.total_time)
425
+ assert_equal(0.0, call_tree.wait_time)
426
+ assert_equal(40.0, call_tree.self_time)
427
+ assert_equal(360.0, call_tree.children_time)
428
+
429
+ # Method 2
430
+ method = methods[2]
431
+ assert_equal('Class#new', method.full_name)
432
+ assert_equal(840.0, method.total_time)
433
+ assert_equal(0.0, method.wait_time)
434
+ assert_equal(840.0, method.self_time)
435
+ assert_equal(0.0, method.children_time)
436
+
437
+ assert_equal(2, method.call_trees.callers.length)
438
+ call_tree = method.call_trees.callers[0]
439
+ assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
440
+ assert_equal(40.0, call_tree.total_time)
441
+ assert_equal(0.0, call_tree.wait_time)
442
+ assert_equal(40.0, call_tree.self_time)
443
+ assert_equal(0.0, call_tree.children_time)
444
+
445
+ call_tree = method.call_trees.callers[1]
446
+ assert_equal('Allocator#make_hashes', call_tree.parent.target.full_name)
447
+ assert_equal(800.0, call_tree.total_time)
448
+ assert_equal(0.0, call_tree.wait_time)
449
+ assert_equal(800.0, call_tree.self_time)
450
+ assert_equal(0.0, call_tree.children_time)
451
+
452
+ assert_equal(2, method.call_trees.callees.length)
453
+ call_tree = method.call_trees.callees[0]
454
+ assert_equal('BasicObject#initialize', call_tree.target.full_name)
455
+ assert_equal(0.0, call_tree.total_time)
456
+ assert_equal(0.0, call_tree.wait_time)
457
+ assert_equal(0.0, call_tree.self_time)
458
+ assert_equal(0.0, call_tree.children_time)
459
+
460
+ call_tree = method.call_trees.callees[1]
461
+ assert_equal('Hash#initialize', call_tree.target.full_name)
462
+ assert_equal(0.0, call_tree.total_time)
463
+ assert_equal(0.0, call_tree.wait_time)
464
+ assert_equal(0.0, call_tree.self_time)
465
+ assert_equal(0.0, call_tree.children_time)
466
+
467
+ # Method 3
468
+ method = methods[3]
469
+ assert_equal('Allocator#make_hashes', method.full_name)
470
+ assert_equal(800.0, method.total_time)
471
+ assert_equal(0.0, method.wait_time)
472
+ assert_equal(0.0, method.self_time)
473
+ assert_equal(800.0, method.children_time)
474
+
475
+ assert_equal(1, method.call_trees.callers.length)
476
+ call_tree = method.call_trees.callers[0]
477
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
478
+ assert_equal(800.0, call_tree.total_time)
479
+ assert_equal(0.0, call_tree.wait_time)
480
+ assert_equal(0.0, call_tree.self_time)
481
+ assert_equal(800.0, call_tree.children_time)
482
+
483
+ assert_equal(1, method.call_trees.callees.length)
484
+ call_tree = method.call_trees.callees[0]
485
+ assert_equal('Class#new', call_tree.target.full_name)
486
+ assert_equal(800.0, call_tree.total_time)
487
+ assert_equal(0.0, call_tree.wait_time)
488
+ assert_equal(800.0, call_tree.self_time)
489
+ assert_equal(0.0, call_tree.children_time)
490
+
491
+ # Method 4
492
+ method = methods[4]
493
+ assert_equal('Allocator#make_strings', method.full_name)
494
+ assert_equal(400.0, method.total_time)
495
+ assert_equal(0.0, method.wait_time)
496
+ assert_equal(40.0, method.self_time)
497
+ assert_equal(360.0, method.children_time)
498
+
499
+ assert_equal(1, method.call_trees.callers.length)
500
+ call_tree = method.call_trees.callers[0]
501
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
502
+ assert_equal(400.0, call_tree.total_time)
503
+ assert_equal(0.0, call_tree.wait_time)
504
+ assert_equal(40.0, call_tree.self_time)
505
+ assert_equal(360.0, call_tree.children_time)
506
+
507
+ assert_equal(2, method.call_trees.callees.length)
508
+ call_tree = method.call_trees.callees[0]
509
+ assert_equal('String#*', call_tree.target.full_name)
510
+ assert_equal(160.0, call_tree.total_time)
511
+ assert_equal(0.0, call_tree.wait_time)
512
+ assert_equal(160.0, call_tree.self_time)
513
+ assert_equal(0.0, call_tree.children_time)
514
+
515
+ call_tree = method.call_trees.callees[1]
516
+ assert_equal('<Class::String>#new', call_tree.target.full_name)
517
+ assert_equal(200.0, call_tree.total_time)
518
+ assert_equal(0.0, call_tree.wait_time)
519
+ assert_equal(40.0, call_tree.self_time)
520
+ assert_equal(160.0, call_tree.children_time)
521
+
522
+ # Method 5
523
+ method = methods[5]
524
+ assert_equal('Allocator#make_arrays', method.full_name)
525
+ assert_equal(400.0, method.total_time)
526
+ assert_equal(0.0, method.wait_time)
527
+ assert_equal(0.0, method.self_time)
528
+ assert_equal(400.0, method.children_time)
529
+
530
+ assert_equal(1, method.call_trees.callers.length)
531
+ call_tree = method.call_trees.callers[0]
532
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
533
+ assert_equal(400.0, call_tree.total_time)
534
+ assert_equal(0.0, call_tree.wait_time)
535
+ assert_equal(0.0, call_tree.self_time)
536
+ assert_equal(400.0, call_tree.children_time)
537
+
538
+ assert_equal(1, method.call_trees.callees.length)
539
+ call_tree = method.call_trees.callees[0]
540
+ assert_equal('Integer#times', call_tree.target.full_name)
541
+ assert_equal(400.0, call_tree.total_time)
542
+ assert_equal(0.0, call_tree.wait_time)
543
+ assert_equal(0.0, call_tree.self_time)
544
+ assert_equal(400.0, call_tree.children_time)
545
+
546
+ # Method 6
547
+ method = methods[6]
548
+ assert_equal('Integer#times', method.full_name)
549
+ assert_equal(400.0, method.total_time)
550
+ assert_equal(0.0, method.wait_time)
551
+ assert_equal(0.0, method.self_time)
552
+ assert_equal(400.0, method.children_time)
553
+
554
+ assert_equal(1, method.call_trees.callers.length)
555
+ call_tree = method.call_trees.callers[0]
556
+ assert_equal('Allocator#make_arrays', call_tree.parent.target.full_name)
557
+ assert_equal(400.0, call_tree.total_time)
558
+ assert_equal(0.0, call_tree.wait_time)
559
+ assert_equal(0.0, call_tree.self_time)
560
+ assert_equal(400.0, call_tree.children_time)
561
+
562
+ assert_equal(4, method.call_trees.callees.length)
563
+
564
+ call_tree = method.call_trees.callees[0]
565
+ assert_equal('Kernel#block_given?', call_tree.target.full_name)
566
+ assert_equal(0, call_tree.total_time)
567
+ assert_equal(0, call_tree.wait_time)
568
+ assert_equal(0, call_tree.self_time)
569
+ assert_equal(0, call_tree.children_time)
570
+
571
+ call_tree = method.call_trees.callees[1]
572
+ assert_equal('Integer#<', call_tree.target.full_name)
573
+ assert_equal(0, call_tree.total_time)
574
+ assert_equal(0, call_tree.wait_time)
575
+ assert_equal(0, call_tree.self_time)
576
+ assert_equal(0, call_tree.children_time)
577
+
578
+ call_tree = method.call_trees.callees[2]
579
+ assert_equal('<Class::Array>#new', call_tree.target.full_name)
580
+ assert_equal(400, call_tree.total_time)
581
+ assert_equal(0, call_tree.wait_time)
582
+ assert_equal(400, call_tree.self_time)
583
+ assert_equal(0, call_tree.children_time)
584
+
585
+ call_tree = method.call_trees.callees[3]
586
+ assert_equal('Integer#succ', call_tree.target.full_name)
587
+ assert_equal(0, call_tree.total_time)
588
+ assert_equal(0, call_tree.wait_time)
589
+ assert_equal(0, call_tree.self_time)
590
+ assert_equal(0, call_tree.children_time)
591
+
592
+ # Method 7
593
+ method = methods[7]
594
+ assert_equal('<Class::Array>#new', method.full_name)
595
+ assert_equal(400.0, method.total_time)
596
+ assert_equal(0.0, method.wait_time)
597
+ assert_equal(400.0, method.self_time)
598
+ assert_equal(0.0, method.children_time)
599
+
600
+ assert_equal(1, method.call_trees.callers.length)
601
+ call_tree = method.call_trees.callers[0]
602
+ assert_equal('Integer#times', call_tree.parent.target.full_name)
603
+ assert_equal(400.0, call_tree.total_time)
604
+ assert_equal(0.0, call_tree.wait_time)
605
+ assert_equal(400.0, call_tree.self_time)
606
+ assert_equal(0.0, call_tree.children_time)
607
+
608
+ assert_equal(1, method.call_trees.callees.length)
609
+ call_tree = method.call_trees.callees[0]
610
+ assert_equal('Array#initialize', call_tree.target.full_name)
611
+ assert_equal(0.0, call_tree.total_time)
612
+ assert_equal(0.0, call_tree.wait_time)
613
+ assert_equal(0.0, call_tree.self_time)
614
+ assert_equal(0.0, call_tree.children_time)
615
+
616
+ # Method 8
617
+ method = methods[8]
618
+ assert_equal('<Class::String>#new', method.full_name)
619
+ assert_equal(200, method.total_time)
620
+ assert_equal(0, method.wait_time)
621
+ assert_equal(40, method.self_time)
622
+ assert_equal(160, method.children_time)
623
+
624
+ assert_equal(1, method.call_trees.callers.length)
625
+ call_tree = method.call_trees.callers[0]
626
+ assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
627
+ assert_equal(200, call_tree.total_time)
628
+ assert_equal(0, call_tree.wait_time)
629
+ assert_equal(40, call_tree.self_time)
630
+ assert_equal(160, call_tree.children_time)
631
+
632
+ assert_equal(1, method.call_trees.callees.length)
633
+
634
+ call_tree = method.call_trees.callees[0]
635
+ assert_equal('String#initialize', call_tree.target.full_name)
636
+ assert_equal(160, call_tree.total_time)
637
+ assert_equal(0, call_tree.wait_time)
638
+ assert_equal(160, call_tree.self_time)
639
+ assert_equal(0, call_tree.children_time)
640
+
641
+ # Method 9
642
+ method = methods[9]
643
+ assert_equal('String#*', method.full_name)
644
+ assert_equal(160, method.total_time)
645
+ assert_equal(0, method.wait_time)
646
+ assert_equal(160, method.self_time)
647
+ assert_equal(0, method.children_time)
648
+
649
+ assert_equal(1, method.call_trees.callers.length)
650
+ call_tree = method.call_trees.callers[0]
651
+ assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
652
+ assert_equal(160, call_tree.total_time)
653
+ assert_equal(0, call_tree.wait_time)
654
+ assert_equal(160, call_tree.self_time)
655
+ assert_equal(0, call_tree.children_time)
656
+
657
+ assert_equal(0, method.call_trees.callees.length)
658
+
659
+ # Method 10
660
+ method = methods[10]
661
+ assert_equal('String#initialize', method.full_name)
662
+ assert_equal(160, method.total_time)
663
+ assert_equal(0, method.wait_time)
664
+ assert_equal(160, method.self_time)
665
+ assert_equal(0, method.children_time)
666
+
667
+ assert_equal(1, method.call_trees.callers.length)
668
+ call_tree = method.call_trees.callers[0]
669
+ assert_equal('<Class::String>#new', call_tree.parent.target.full_name)
670
+ assert_equal(160, call_tree.total_time)
671
+ assert_equal(0, call_tree.wait_time)
672
+ assert_equal(160, call_tree.self_time)
673
+ assert_equal(0, call_tree.children_time)
674
+
675
+ assert_equal(0, method.call_trees.callees.length)
676
+
677
+ # Method 11
678
+ method = methods[11]
679
+ assert_equal('BasicObject#initialize', method.full_name)
680
+ assert_equal(0, method.total_time)
681
+ assert_equal(0, method.wait_time)
682
+ assert_equal(0, method.self_time)
683
+ assert_equal(0, method.children_time)
684
+
685
+ assert_equal(1, method.call_trees.callers.length)
686
+ call_tree = method.call_trees.callers[0]
687
+ assert_equal('Class#new', call_tree.parent.target.full_name)
688
+ assert_equal(0, call_tree.total_time)
689
+ assert_equal(0, call_tree.wait_time)
690
+ assert_equal(0, call_tree.self_time)
691
+ assert_equal(0, call_tree.children_time)
692
+
693
+ assert_equal(0, method.call_trees.callees.length)
694
+
695
+ # Method 12
696
+ method = methods[12]
697
+ assert_equal('Kernel#block_given?', method.full_name)
698
+ assert_equal(0, method.total_time)
699
+ assert_equal(0, method.wait_time)
700
+ assert_equal(0, method.self_time)
701
+ assert_equal(0, method.children_time)
702
+
703
+ assert_equal(1, method.call_trees.callers.length)
704
+ call_tree = method.call_trees.callers[0]
705
+ assert_equal('Integer#times', call_tree.parent.target.full_name)
706
+ assert_equal(0, call_tree.total_time)
707
+ assert_equal(0, call_tree.wait_time)
708
+ assert_equal(0, call_tree.self_time)
709
+ assert_equal(0, call_tree.children_time)
710
+
711
+ assert_equal(0, method.call_trees.callees.length)
712
+
713
+ # Method 13
714
+ method = methods[13]
715
+ assert_equal('Integer#succ', method.full_name)
716
+ assert_equal(0, method.total_time)
717
+ assert_equal(0, method.wait_time)
718
+ assert_equal(0, method.self_time)
719
+ assert_equal(0, method.children_time)
720
+
721
+ assert_equal(1, method.call_trees.callers.length)
722
+ call_tree = method.call_trees.callers[0]
723
+ assert_equal('Integer#times', call_tree.parent.target.full_name)
724
+ assert_equal(0, call_tree.total_time)
725
+ assert_equal(0, call_tree.wait_time)
726
+ assert_equal(0, call_tree.self_time)
727
+ assert_equal(0, call_tree.children_time)
728
+
729
+ assert_equal(0, method.call_trees.callees.length)
730
+
731
+ # Method 14
732
+ method = methods[14]
733
+ assert_equal('Integer#<', method.full_name)
734
+ assert_equal(0, method.total_time)
735
+ assert_equal(0, method.wait_time)
736
+ assert_equal(0, method.self_time)
737
+ assert_equal(0, method.children_time)
738
+
739
+ assert_equal(1, method.call_trees.callers.length)
740
+ call_tree = method.call_trees.callers[0]
741
+ assert_equal('Integer#times', call_tree.parent.target.full_name)
742
+ assert_equal(0, call_tree.total_time)
743
+ assert_equal(0, call_tree.wait_time)
744
+ assert_equal(0, call_tree.self_time)
745
+ assert_equal(0, call_tree.children_time)
746
+
747
+ assert_equal(0, method.call_trees.callees.length)
748
+
749
+ # Method 15
750
+ method = methods[15]
751
+ assert_equal('Hash#initialize', method.full_name)
752
+ assert_equal(0.0, method.total_time)
753
+ assert_equal(0.0, method.wait_time)
754
+ assert_equal(0.0, method.self_time)
755
+ assert_equal(0.0, method.children_time)
756
+
757
+ assert_equal(1, method.call_trees.callers.length)
758
+ call_tree = method.call_trees.callers[0]
759
+ assert_equal('Class#new', call_tree.parent.target.full_name)
760
+ assert_equal(0.0, call_tree.total_time)
761
+ assert_equal(0.0, call_tree.wait_time)
762
+ assert_equal(0.0, call_tree.self_time)
763
+ assert_equal(0.0, call_tree.children_time)
764
+
765
+ assert_equal(0, method.call_trees.callees.length)
766
+
767
+ # Method 16
768
+ method = methods[16]
769
+ assert_equal('Array#initialize', method.full_name)
770
+ assert_equal(0.0, method.total_time)
771
+ assert_equal(0.0, method.wait_time)
772
+ assert_equal(0.0, method.self_time)
773
+ assert_equal(0.0, method.children_time)
774
+
775
+ assert_equal(1, method.call_trees.callers.length)
776
+ call_tree = method.call_trees.callers[0]
777
+ assert_equal('<Class::Array>#new', call_tree.parent.target.full_name)
778
+ assert_equal(0.0, call_tree.total_time)
779
+ assert_equal(0.0, call_tree.wait_time)
780
+ assert_equal(0.0, call_tree.self_time)
781
+ assert_equal(0.0, call_tree.children_time)
782
+
783
+ assert_equal(0.0, method.call_trees.callees.length)
784
+ end
785
+ else
786
+ def test_memory
787
+ result = RubyProf::Profile.profile(measure_mode: RubyProf::MEMORY) do
788
+ allocator = Allocator.new
789
+ allocator.run
790
+ end
791
+
792
+ thread = result.threads.first
793
+
794
+ assert_in_delta(1640, thread.total_time, 1)
795
+ methods = result.threads.first.methods.sort.reverse
796
+ assert_equal(16, methods.length)
797
+
798
+ # Method 0
799
+ method = methods[0]
800
+ assert_equal('MeasureMemoryTest#test_memory', method.full_name)
801
+ assert_in_delta(1640, method.total_time, 1)
802
+
803
+ assert_equal(0.0, method.wait_time)
804
+ assert_equal(0.0, method.self_time)
805
+ assert_in_delta(1640, method.children_time, 1)
806
+ assert_equal(0, method.call_trees.callers.length)
807
+
808
+ assert_equal(2, method.call_trees.callees.length)
809
+ call_tree = method.call_trees.callees[0]
810
+ assert_equal('Class#new', call_tree.target.full_name)
811
+ assert_equal(40.0, call_tree.total_time)
812
+ assert_equal(0.0, call_tree.wait_time)
813
+ assert_equal(40.0, call_tree.self_time)
814
+ assert_equal(0.0, call_tree.children_time)
815
+
816
+ call_tree = method.call_trees.callees[1]
817
+ assert_equal('Allocator#run', call_tree.target.full_name)
818
+ assert_equal(1600.0, call_tree.total_time)
819
+ assert_equal(0.0, call_tree.wait_time)
820
+ assert_equal(0.0, call_tree.self_time)
821
+ assert_equal(1600.0, call_tree.children_time)
822
+
823
+ # Method 1
824
+ method = methods[1]
825
+ assert_equal('Allocator#run',method.full_name)
826
+ assert_equal(1600.0, method.total_time)
827
+ assert_equal(0.0, method.wait_time)
828
+ assert_equal(0.0, method.self_time)
829
+ assert_equal(1600.0, method.children_time)
830
+
831
+ assert_equal(1, method.call_trees.callers.length)
832
+ call_tree = method.call_trees.callers[0]
833
+ assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
834
+ assert_equal(1600.0, call_tree.total_time)
835
+ assert_equal(0.0, call_tree.wait_time)
836
+ assert_equal(0.0, call_tree.self_time)
837
+ assert_equal(1600.0, call_tree.children_time)
838
+
839
+ assert_equal(3, method.call_trees.callees.length)
840
+ call_tree = method.call_trees.callees[0]
841
+ assert_equal('Allocator#make_arrays', call_tree.target.full_name)
842
+ assert_equal(400.0, call_tree.total_time)
843
+ assert_equal(0.0, call_tree.wait_time)
844
+ assert_equal(0.0, call_tree.self_time)
845
+ assert_equal(400.0, call_tree.children_time)
846
+
847
+ call_tree = method.call_trees.callees[1]
848
+ assert_equal('Allocator#make_hashes', call_tree.target.full_name)
849
+ assert_equal(800.0, call_tree.total_time)
850
+ assert_equal(0.0, call_tree.wait_time)
851
+ assert_equal(0.0, call_tree.self_time)
852
+ assert_equal(800.0, call_tree.children_time)
853
+
854
+ call_tree = method.call_trees.callees[2]
855
+ assert_equal('Allocator#make_strings', call_tree.target.full_name)
856
+ assert_equal(400.0, call_tree.total_time)
857
+ assert_equal(0.0, call_tree.wait_time)
858
+ assert_equal(40.0, call_tree.self_time)
859
+ assert_equal(360.0, call_tree.children_time)
860
+
861
+ # Method 2
862
+ method = methods[2]
863
+ assert_equal('Class#new', method.full_name)
864
+ assert_equal(840.0, method.total_time)
865
+ assert_equal(0.0, method.wait_time)
866
+ assert_equal(840.0, method.self_time)
867
+ assert_equal(0.0, method.children_time)
868
+
869
+ assert_equal(2, method.call_trees.callers.length)
870
+ call_tree = method.call_trees.callers[0]
871
+ assert_equal('MeasureMemoryTest#test_memory', call_tree.parent.target.full_name)
872
+ assert_equal(40.0, call_tree.total_time)
873
+ assert_equal(0.0, call_tree.wait_time)
874
+ assert_equal(40.0, call_tree.self_time)
875
+ assert_equal(0.0, call_tree.children_time)
876
+
877
+ call_tree = method.call_trees.callers[1]
878
+ assert_equal('Allocator#make_hashes', call_tree.parent.target.full_name)
879
+ assert_equal(800.0, call_tree.total_time)
880
+ assert_equal(0.0, call_tree.wait_time)
881
+ assert_equal(800.0, call_tree.self_time)
882
+ assert_equal(0.0, call_tree.children_time)
883
+
884
+ assert_equal(2, method.call_trees.callees.length)
885
+ call_tree = method.call_trees.callees[0]
886
+ assert_equal('BasicObject#initialize', call_tree.target.full_name)
887
+ assert_equal(0.0, call_tree.total_time)
888
+ assert_equal(0.0, call_tree.wait_time)
889
+ assert_equal(0.0, call_tree.self_time)
890
+ assert_equal(0.0, call_tree.children_time)
891
+
892
+ call_tree = method.call_trees.callees[1]
893
+ assert_equal('Hash#initialize', call_tree.target.full_name)
894
+ assert_equal(0.0, call_tree.total_time)
895
+ assert_equal(0.0, call_tree.wait_time)
896
+ assert_equal(0.0, call_tree.self_time)
897
+ assert_equal(0.0, call_tree.children_time)
898
+
899
+ # Method 3
900
+ method = methods[3]
901
+ assert_equal('Allocator#make_hashes', method.full_name)
902
+ assert_equal(800.0, method.total_time)
903
+ assert_equal(0.0, method.wait_time)
904
+ assert_equal(0.0, method.self_time)
905
+ assert_equal(800.0, method.children_time)
906
+
907
+ assert_equal(1, method.call_trees.callers.length)
908
+ call_tree = method.call_trees.callers[0]
909
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
910
+ assert_equal(800.0, call_tree.total_time)
911
+ assert_equal(0.0, call_tree.wait_time)
912
+ assert_equal(0.0, call_tree.self_time)
913
+ assert_equal(800.0, call_tree.children_time)
914
+
915
+ assert_equal(1, method.call_trees.callees.length)
916
+ call_tree = method.call_trees.callees[0]
917
+ assert_equal('Class#new', call_tree.target.full_name)
918
+ assert_equal(800.0, call_tree.total_time)
919
+ assert_equal(0.0, call_tree.wait_time)
920
+ assert_equal(800.0, call_tree.self_time)
921
+ assert_equal(0.0, call_tree.children_time)
922
+
923
+ # Method 4
924
+ method = methods[4]
925
+ assert_equal('Allocator#make_strings', method.full_name)
926
+ assert_equal(400.0, method.total_time)
927
+ assert_equal(0.0, method.wait_time)
928
+ assert_equal(40.0, method.self_time)
929
+ assert_equal(360.0, method.children_time)
930
+
931
+ assert_equal(1, method.call_trees.callers.length)
932
+ call_tree = method.call_trees.callers[0]
933
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
934
+ assert_equal(400.0, call_tree.total_time)
935
+ assert_equal(0.0, call_tree.wait_time)
936
+ assert_equal(40.0, call_tree.self_time)
937
+ assert_equal(360.0, call_tree.children_time)
938
+
939
+ assert_equal(2, method.call_trees.callees.length)
940
+ call_tree = method.call_trees.callees[0]
941
+ assert_equal('String#*', call_tree.target.full_name)
942
+ assert_equal(160.0, call_tree.total_time)
943
+ assert_equal(0.0, call_tree.wait_time)
944
+ assert_equal(160.0, call_tree.self_time)
945
+ assert_equal(0.0, call_tree.children_time)
946
+
947
+ call_tree = method.call_trees.callees[1]
948
+ assert_equal('<Class::String>#new', call_tree.target.full_name)
949
+ assert_equal(200.0, call_tree.total_time)
950
+ assert_equal(0.0, call_tree.wait_time)
951
+ assert_equal(40.0, call_tree.self_time)
952
+ assert_equal(160.0, call_tree.children_time)
953
+
954
+ # Method 5
955
+ method = methods[5]
956
+ assert_equal('Allocator#make_arrays', method.full_name)
957
+ assert_equal(400.0, method.total_time)
958
+ assert_equal(0.0, method.wait_time)
959
+ assert_equal(0.0, method.self_time)
960
+ assert_equal(400.0, method.children_time)
961
+
962
+ assert_equal(1, method.call_trees.callers.length)
963
+ call_tree = method.call_trees.callers[0]
964
+ assert_equal('Allocator#run', call_tree.parent.target.full_name)
965
+ assert_equal(400.0, call_tree.total_time)
966
+ assert_equal(0.0, call_tree.wait_time)
967
+ assert_equal(0.0, call_tree.self_time)
968
+ assert_equal(400.0, call_tree.children_time)
969
+
970
+ assert_equal(1, method.call_trees.callees.length)
971
+ call_tree = method.call_trees.callees[0]
972
+ assert_equal('Integer#times', call_tree.target.full_name)
973
+ assert_equal(400.0, call_tree.total_time)
974
+ assert_equal(0.0, call_tree.wait_time)
975
+ assert_equal(0.0, call_tree.self_time)
976
+ assert_equal(400.0, call_tree.children_time)
977
+
978
+ # Method 6
979
+ method = methods[6]
980
+ assert_equal('Integer#times', method.full_name)
981
+ assert_equal(400.0, method.total_time)
982
+ assert_equal(0.0, method.wait_time)
983
+ assert_equal(0.0, method.self_time)
984
+ assert_equal(400.0, method.children_time)
985
+
986
+ assert_equal(1, method.call_trees.callers.length)
987
+ call_tree = method.call_trees.callers[0]
988
+ assert_equal('Allocator#make_arrays', call_tree.parent.target.full_name)
989
+ assert_equal(400.0, call_tree.total_time)
990
+ assert_equal(0.0, call_tree.wait_time)
991
+ assert_equal(0.0, call_tree.self_time)
992
+ assert_equal(400.0, call_tree.children_time)
993
+
994
+ assert_equal(3, method.call_trees.callees.length)
995
+
996
+ call_tree = method.call_trees.callees[0]
997
+ assert_equal('Integer#<', call_tree.target.full_name)
998
+ assert_equal(0, call_tree.total_time)
999
+ assert_equal(0, call_tree.wait_time)
1000
+ assert_equal(0, call_tree.self_time)
1001
+ assert_equal(0, call_tree.children_time)
1002
+
1003
+ call_tree = method.call_trees.callees[1]
1004
+ assert_equal('<Class::Array>#new', call_tree.target.full_name)
1005
+ assert_equal(400, call_tree.total_time)
1006
+ assert_equal(0, call_tree.wait_time)
1007
+ assert_equal(400, call_tree.self_time)
1008
+ assert_equal(0, call_tree.children_time)
1009
+
1010
+ call_tree = method.call_trees.callees[2]
1011
+ assert_equal('Integer#succ', call_tree.target.full_name)
1012
+ assert_equal(0, call_tree.total_time)
1013
+ assert_equal(0, call_tree.wait_time)
1014
+ assert_equal(0, call_tree.self_time)
1015
+ assert_equal(0, call_tree.children_time)
1016
+
1017
+ # Method 7
1018
+ method = methods[7]
1019
+ assert_equal('<Class::Array>#new', method.full_name)
1020
+ assert_equal(400.0, method.total_time)
1021
+ assert_equal(0.0, method.wait_time)
1022
+ assert_equal(400.0, method.self_time)
1023
+ assert_equal(0.0, method.children_time)
1024
+
1025
+ assert_equal(1, method.call_trees.callers.length)
1026
+ call_tree = method.call_trees.callers[0]
1027
+ assert_equal('Integer#times', call_tree.parent.target.full_name)
1028
+ assert_equal(400.0, call_tree.total_time)
1029
+ assert_equal(0.0, call_tree.wait_time)
1030
+ assert_equal(400.0, call_tree.self_time)
1031
+ assert_equal(0.0, call_tree.children_time)
1032
+
1033
+ assert_equal(1, method.call_trees.callees.length)
1034
+ call_tree = method.call_trees.callees[0]
1035
+ assert_equal('Array#initialize', call_tree.target.full_name)
1036
+ assert_equal(0.0, call_tree.total_time)
1037
+ assert_equal(0.0, call_tree.wait_time)
1038
+ assert_equal(0.0, call_tree.self_time)
1039
+ assert_equal(0.0, call_tree.children_time)
1040
+
1041
+ # Method 8
1042
+ method = methods[8]
1043
+ assert_equal('<Class::String>#new', method.full_name)
1044
+ assert_equal(200, method.total_time)
1045
+ assert_equal(0, method.wait_time)
1046
+ assert_equal(40, method.self_time)
1047
+ assert_equal(160, method.children_time)
1048
+
1049
+ assert_equal(1, method.call_trees.callers.length)
1050
+ call_tree = method.call_trees.callers[0]
1051
+ assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
1052
+ assert_equal(200, call_tree.total_time)
1053
+ assert_equal(0, call_tree.wait_time)
1054
+ assert_equal(40, call_tree.self_time)
1055
+ assert_equal(160, call_tree.children_time)
1056
+
1057
+ assert_equal(1, method.call_trees.callees.length)
1058
+
1059
+ call_tree = method.call_trees.callees[0]
1060
+ assert_equal('String#initialize', call_tree.target.full_name)
1061
+ assert_equal(160, call_tree.total_time)
1062
+ assert_equal(0, call_tree.wait_time)
1063
+ assert_equal(160, call_tree.self_time)
1064
+ assert_equal(0, call_tree.children_time)
1065
+
1066
+ # Method 9
1067
+ method = methods[9]
1068
+ assert_equal('String#*', method.full_name)
1069
+ assert_equal(160, method.total_time)
1070
+ assert_equal(0, method.wait_time)
1071
+ assert_equal(160, method.self_time)
1072
+ assert_equal(0, method.children_time)
1073
+
1074
+ assert_equal(1, method.call_trees.callers.length)
1075
+ call_tree = method.call_trees.callers[0]
1076
+ assert_equal('Allocator#make_strings', call_tree.parent.target.full_name)
1077
+ assert_equal(160, call_tree.total_time)
1078
+ assert_equal(0, call_tree.wait_time)
1079
+ assert_equal(160, call_tree.self_time)
1080
+ assert_equal(0, call_tree.children_time)
1081
+
1082
+ assert_equal(0, method.call_trees.callees.length)
1083
+
1084
+ # Method 10
1085
+ method = methods[10]
1086
+ assert_equal('String#initialize', method.full_name)
1087
+ assert_equal(160, method.total_time)
1088
+ assert_equal(0, method.wait_time)
1089
+ assert_equal(160, method.self_time)
1090
+ assert_equal(0, method.children_time)
1091
+
1092
+ assert_equal(1, method.call_trees.callers.length)
1093
+ call_tree = method.call_trees.callers[0]
1094
+ assert_equal('<Class::String>#new', call_tree.parent.target.full_name)
1095
+ assert_equal(160, call_tree.total_time)
1096
+ assert_equal(0, call_tree.wait_time)
1097
+ assert_equal(160, call_tree.self_time)
1098
+ assert_equal(0, call_tree.children_time)
1099
+
1100
+ assert_equal(0, method.call_trees.callees.length)
1101
+
1102
+ # Method 11
1103
+ method = methods[11]
1104
+ assert_equal('BasicObject#initialize', method.full_name)
1105
+ assert_equal(0, method.total_time)
1106
+ assert_equal(0, method.wait_time)
1107
+ assert_equal(0, method.self_time)
1108
+ assert_equal(0, method.children_time)
1109
+
1110
+ assert_equal(1, method.call_trees.callers.length)
1111
+ call_tree = method.call_trees.callers[0]
1112
+ assert_equal('Class#new', call_tree.parent.target.full_name)
1113
+ assert_equal(0, call_tree.total_time)
1114
+ assert_equal(0, call_tree.wait_time)
1115
+ assert_equal(0, call_tree.self_time)
1116
+ assert_equal(0, call_tree.children_time)
1117
+
1118
+ assert_equal(0, method.call_trees.callees.length)
1119
+
1120
+ # Method 12
1121
+ method = methods[12]
1122
+ assert_equal('Integer#succ', method.full_name)
1123
+ assert_equal(0, method.total_time)
1124
+ assert_equal(0, method.wait_time)
1125
+ assert_equal(0, method.self_time)
1126
+ assert_equal(0, method.children_time)
1127
+
1128
+ assert_equal(1, method.call_trees.callers.length)
1129
+ call_tree = method.call_trees.callers[0]
1130
+ assert_equal('Integer#times', call_tree.parent.target.full_name)
1131
+ assert_equal(0, call_tree.total_time)
1132
+ assert_equal(0, call_tree.wait_time)
1133
+ assert_equal(0, call_tree.self_time)
1134
+ assert_equal(0, call_tree.children_time)
1135
+
1136
+ assert_equal(0, method.call_trees.callees.length)
1137
+
1138
+ # Method 13
1139
+ method = methods[13]
1140
+ assert_equal('Integer#<', method.full_name)
1141
+ assert_equal(0, method.total_time)
1142
+ assert_equal(0, method.wait_time)
1143
+ assert_equal(0, method.self_time)
1144
+ assert_equal(0, method.children_time)
1145
+
1146
+ assert_equal(1, method.call_trees.callers.length)
1147
+ call_tree = method.call_trees.callers[0]
1148
+ assert_equal('Integer#times', call_tree.parent.target.full_name)
1149
+ assert_equal(0, call_tree.total_time)
1150
+ assert_equal(0, call_tree.wait_time)
1151
+ assert_equal(0, call_tree.self_time)
1152
+ assert_equal(0, call_tree.children_time)
1153
+
1154
+ assert_equal(0, method.call_trees.callees.length)
1155
+
1156
+ # Method 14
1157
+ method = methods[14]
1158
+ assert_equal('Hash#initialize', method.full_name)
1159
+ assert_equal(0.0, method.total_time)
1160
+ assert_equal(0.0, method.wait_time)
1161
+ assert_equal(0.0, method.self_time)
1162
+ assert_equal(0.0, method.children_time)
1163
+
1164
+ assert_equal(1, method.call_trees.callers.length)
1165
+ call_tree = method.call_trees.callers[0]
1166
+ assert_equal('Class#new', call_tree.parent.target.full_name)
1167
+ assert_equal(0.0, call_tree.total_time)
1168
+ assert_equal(0.0, call_tree.wait_time)
1169
+ assert_equal(0.0, call_tree.self_time)
1170
+ assert_equal(0.0, call_tree.children_time)
1171
+
1172
+ assert_equal(0, method.call_trees.callees.length)
1173
+
1174
+ # Method 15
1175
+ method = methods[15]
1176
+ assert_equal('Array#initialize', method.full_name)
1177
+ assert_equal(0.0, method.total_time)
1178
+ assert_equal(0.0, method.wait_time)
1179
+ assert_equal(0.0, method.self_time)
1180
+ assert_equal(0.0, method.children_time)
1181
+
1182
+ assert_equal(1, method.call_trees.callers.length)
1183
+ call_tree = method.call_trees.callers[0]
1184
+ assert_equal('<Class::Array>#new', call_tree.parent.target.full_name)
1185
+ assert_equal(0.0, call_tree.total_time)
1186
+ assert_equal(0.0, call_tree.wait_time)
1187
+ assert_equal(0.0, call_tree.self_time)
1188
+ assert_equal(0.0, call_tree.children_time)
1189
+
1190
+ assert_equal(0.0, method.call_trees.callees.length)
1191
+ end
1192
+ end
1193
+ end