[前][次][番号順一覧][スレッド一覧]

ruby-changes:66531

From: Ulysse <ko1@a...>
Date: Mon, 21 Jun 2021 18:44:40 +0900 (JST)
Subject: [ruby-changes:66531] 5cc11845b2 (master): [ruby/irb] Improve stackprof measure

https://git.ruby-lang.org/ruby.git/commit/?id=5cc11845b2

From 5cc11845b2feb609a54fd1be8748da590eeebdb3 Mon Sep 17 00:00:00 2001
From: Ulysse Buonomo <buonomo.ulysse@g...>
Date: Thu, 27 May 2021 07:35:09 +0200
Subject: [ruby/irb] Improve stackprof measure

Allow usage of more detailed args when setting stackprof callback.

Signed-off-by: Ulysse Buonomo <buonomo.ulysse@g...>

https://github.com/ruby/irb/commit/c9d101f450
---
 lib/irb/init.rb | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/lib/irb/init.rb b/lib/irb/init.rb
index 3a5f3de..5923c54 100644
--- a/lib/irb/init.rb
+++ b/lib/irb/init.rb
@@ -120,7 +120,11 @@ module IRB # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/irb/init.rb#L120
       puts 'processing time: %fs' % (now - time) if IRB.conf[:MEASURE]
       result
     }
+    # arg can be either a symbol for the mode (:cpu, :wall, ..) or a hash for
+    # a more complete configuration.
+    # See https://github.com/tmm1/stackprof#all-options.
     @CONF[:MEASURE_PROC][:STACKPROF] = proc { |context, code, line_no, arg, &block|
+      return block.() unless IRB.conf[:MEASURE]
       success = false
       begin
         require 'stackprof'
@@ -130,10 +134,18 @@ module IRB # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/irb/init.rb#L134
       end
       if success
         result = nil
-        stackprof_result = StackProf.run(mode: arg ? arg : :cpu) do
+        arg = { mode: arg || :cpu } unless arg.is_a?(Hash)
+        stackprof_result = StackProf.run(**arg) do
           result = block.()
         end
-        StackProf::Report.new(stackprof_result).print_text if IRB.conf[:MEASURE]
+        case stackprof_result
+        when File
+          puts "StackProf report saved to #{stackprof_result.path}"
+        when Hash
+          StackProf::Report.new(stackprof_result).print_text
+        else
+          puts "Stackprof ran with #{arg.inspect}"
+        end
         result
       else
         block.()
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]