ruby-prof 1.4.3 → 1.6.3

Sign up to get free protection for your applications and to get access to all the features.
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)