Profiling run at 2021-02-01 00:43:34 -0500 ruby v2.7.2, DHeap v0.6.1 ~~~~~~ filling @dheap_bm_random_vals with 1.0M ~~~~~~ ######################################################################## # Profile w/ N=10 (i=1000000) # (n.b. RubyProf & tracepoint can change relative performance. # A sampling profiler can provide more accurate relative metrics. ######################################################################## Filling ruby binary heap --------------------------- Profiling ruby binary heap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 5.194751 Sort by: self_time %self total self wait child calls name location 41.50 2.156 2.156 0.000 0.000 1000000 DHeap::Benchmarks::RbHeap#<< /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:107 36.37 2.137 1.889 0.000 0.247 1000000 DHeap::Benchmarks::RbHeap#pop /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:121 14.92 5.195 0.775 0.000 4.420 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 2.46 0.128 0.128 0.000 0.000 1000000 Array#fetch 2.41 0.125 0.125 0.000 0.000 1000000 Array#pop 2.35 0.122 0.122 0.000 0.000 1000000 Array#first * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. Filling quaternary DHeap --------------------------- Profiling quaternary DHeap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 1.103473 Sort by: self_time %self total self wait child calls name location 64.92 1.103 0.716 0.000 0.387 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 12.09 0.133 0.133 0.000 0.000 1000000 DHeap#<< 11.82 0.130 0.130 0.000 0.000 1000000 DHeap#pop 11.16 0.123 0.123 0.000 0.000 1000000 Array#fetch * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. ######################################################################## # Profile w/ N=100 (i=1000000) # (n.b. RubyProf & tracepoint can change relative performance. # A sampling profiler can provide more accurate relative metrics. ######################################################################## Filling ruby binary heap --------------------------- Profiling ruby binary heap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 7.422039 Sort by: self_time %self total self wait child calls name location 47.72 3.542 3.542 0.000 0.000 1000000 DHeap::Benchmarks::RbHeap#<< /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:107 36.82 2.984 2.733 0.000 0.251 1000000 DHeap::Benchmarks::RbHeap#pop /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:121 10.39 7.422 0.771 0.000 6.651 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 1.71 0.127 0.127 0.000 0.000 1000000 Array#pop 1.69 0.125 0.125 0.000 0.000 1000000 Array#fetch 1.67 0.124 0.124 0.000 0.000 1000000 Array#first * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. Filling quaternary DHeap --------------------------- Profiling quaternary DHeap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 1.163539 Sort by: self_time %self total self wait child calls name location 64.38 1.164 0.749 0.000 0.414 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 12.52 0.146 0.146 0.000 0.000 1000000 DHeap#<< 12.43 0.145 0.145 0.000 0.000 1000000 DHeap#pop 10.67 0.124 0.124 0.000 0.000 1000000 Array#fetch * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. ######################################################################## # Profile w/ N=1000 (i=1000000) # (n.b. RubyProf & tracepoint can change relative performance. # A sampling profiler can provide more accurate relative metrics. ######################################################################## Filling ruby binary heap --------------------------- Profiling ruby binary heap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 9.693127 Sort by: self_time %self total self wait child calls name location 52.28 5.068 5.068 0.000 0.000 1000000 DHeap::Benchmarks::RbHeap#<< /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:107 35.52 3.702 3.443 0.000 0.259 1000000 DHeap::Benchmarks::RbHeap#pop /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:121 8.18 9.693 0.793 0.000 8.900 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 1.36 0.131 0.131 0.000 0.000 1000000 Array#pop 1.35 0.131 0.131 0.000 0.000 1000000 Array#fetch 1.32 0.128 0.128 0.000 0.000 1000000 Array#first * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. Filling quaternary DHeap --------------------------- Profiling quaternary DHeap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 1.125575 Sort by: self_time %self total self wait child calls name location 64.22 1.126 0.723 0.000 0.403 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 13.16 0.148 0.148 0.000 0.000 1000000 DHeap#<< 12.01 0.135 0.135 0.000 0.000 1000000 DHeap#pop 10.62 0.119 0.119 0.000 0.000 1000000 Array#fetch * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. ######################################################################## # Profile w/ N=10000 (i=1000000) # (n.b. RubyProf & tracepoint can change relative performance. # A sampling profiler can provide more accurate relative metrics. ######################################################################## Filling ruby binary heap --------------------------- Profiling ruby binary heap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 13.737007 Sort by: self_time %self total self wait child calls name location 49.46 6.794 6.794 0.000 0.000 1000000 DHeap::Benchmarks::RbHeap#<< /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:107 41.97 6.017 5.765 0.000 0.251 1000000 DHeap::Benchmarks::RbHeap#pop /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:121 5.80 13.737 0.796 0.000 12.941 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. Filling quaternary DHeap --------------------------- Profiling quaternary DHeap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 1.179968 Sort by: self_time %self total self wait child calls name location 62.48 1.180 0.737 0.000 0.443 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 13.86 0.164 0.164 0.000 0.000 1000000 DHeap#<< 13.46 0.159 0.159 0.000 0.000 1000000 DHeap#pop 10.20 0.120 0.120 0.000 0.000 1000000 Array#fetch * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. ######################################################################## # Profile w/ N=100000 (i=1000000) # (n.b. RubyProf & tracepoint can change relative performance. # A sampling profiler can provide more accurate relative metrics. ######################################################################## Filling ruby binary heap --------------------------- Profiling ruby binary heap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 16.425915 Sort by: self_time %self total self wait child calls name location 50.99 8.623 8.376 0.000 0.247 1000000 DHeap::Benchmarks::RbHeap#pop /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:121 41.82 6.869 6.869 0.000 0.000 1000000 DHeap::Benchmarks::RbHeap#<< /home/nick/src/d_heap/lib/d_heap/benchmarks/implementations.rb:107 4.89 16.426 0.803 0.000 15.623 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class. Filling quaternary DHeap --------------------------- Profiling quaternary DHeap --------------------------- Measure Mode: wall_time Thread ID: 1400 Fiber ID: 1380 Total: 1.205573 Sort by: self_time %self total self wait child calls name location 59.14 1.206 0.713 0.000 0.493 1 DHeap::Benchmarks::Scenarios#repeated_push_pop /home/nick/src/d_heap/lib/d_heap/benchmarks.rb:81 16.93 0.204 0.204 0.000 0.000 1000000 DHeap#pop 13.88 0.167 0.167 0.000 0.000 1000000 DHeap#<< 10.05 0.121 0.121 0.000 0.000 1000000 Array#fetch * recursively called methods Columns are: %self - The percentage of time spent in this method, derived from self_time/total_time. total - The time spent in this method and its children. self - The time spent in this method. wait - The amount of time this method waited for other threads. child - The time spent in this method's children. calls - The number of times this method was called. name - The name of the method. location - The location of the method. The interpretation of method names is: * MyObject#test - An instance method "test" of the class "MyObject" * #test - The <> characters indicate a method on a singleton class.