ruby-prof 1.4.3 → 1.6.3

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