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

ruby-changes:72376

From: Dave <ko1@a...>
Date: Thu, 30 Jun 2022 23:24:51 +0900 (JST)
Subject: [ruby-changes:72376] 2366e14976 (master): YJIT: Handle 0 total_exits YJIT Status Display (#6079)

https://git.ruby-lang.org/ruby.git/commit/?id=2366e14976

From 2366e14976cd875e0b98321eb339d23016268b72 Mon Sep 17 00:00:00 2001
From: Dave Schwantes <dorkrawk@g...>
Date: Thu, 30 Jun 2022 09:24:34 -0500
Subject: YJIT: Handle 0 total_exits YJIT Status Display (#6079)

handle case in YJIT stats where 0 exits causes NaN in the display
---
 yjit.rb | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/yjit.rb b/yjit.rb
index b0ddb475ac..b3c1efdbd4 100644
--- a/yjit.rb
+++ b/yjit.rb
@@ -233,19 +233,23 @@ module RubyVM::YJIT https://github.com/ruby/ruby/blob/trunk/yjit.rb#L233
       exits = exits.sort_by { |name, count| -count }[0...how_many]
       total_exits = total_exit_count(stats)
 
-      top_n_total = exits.map { |name, count| count }.sum
-      top_n_exit_pct = 100.0 * top_n_total / total_exits
-
-      $stderr.puts "Top-#{how_many} most frequent exit ops (#{"%.1f" % top_n_exit_pct}% of exits):"
-
-      longest_insn_name_len = exits.map { |name, count| name.length }.max
-      exits.each do |name, count|
-        padding = longest_insn_name_len + left_pad
-        padded_name = "%#{padding}s" % name
-        padded_count = "%10d" % count
-        percent = 100.0 * count / total_exits
-        formatted_percent = "%.1f" % percent
-        $stderr.puts("#{padded_name}: #{padded_count} (#{formatted_percent}%)" )
+      if total_exits > 0
+        top_n_total = exits.map { |name, count| count }.sum
+        top_n_exit_pct = 100.0 * top_n_total / total_exits
+
+        $stderr.puts "Top-#{how_many} most frequent exit ops (#{"%.1f" % top_n_exit_pct}% of exits):"
+
+        longest_insn_name_len = exits.map { |name, count| name.length }.max
+        exits.each do |name, count|
+          padding = longest_insn_name_len + left_pad
+          padded_name = "%#{padding}s" % name
+          padded_count = "%10d" % count
+          percent = 100.0 * count / total_exits
+          formatted_percent = "%.1f" % percent
+          $stderr.puts("#{padded_name}: #{padded_count} (#{formatted_percent}%)" )
+        end
+      else
+        $stderr.puts "total_exits:           " + ("%10d" % total_exits)
       end
     end
 
-- 
cgit v1.2.1


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

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