aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMau Magnaguagno <maumagnaguagno@gmail.com>2023-11-08 12:37:19 -0300
committerGitHub <noreply@github.com>2023-11-08 10:37:19 -0500
commiteb2abc3f16685979ea87861900fb33b3a975589e (patch)
treed899ef17d2dcabc10ef9a1bb260d6ff429b1f810
parent50402db5a7d3bb2a9a93d63a63295b4d85a68088 (diff)
downloadruby-eb2abc3f16685979ea87861900fb33b3a975589e.tar.gz
YJIT: refactor format_number (#8869)
Replace enumerators with simpler and faster version that only inserts commas before '.' or end of integer string.
-rw-r--r--yjit.rb9
1 files changed, 4 insertions, 5 deletions
diff --git a/yjit.rb b/yjit.rb
index a9f260e4f4..632d1c58c3 100644
--- a/yjit.rb
+++ b/yjit.rb
@@ -437,11 +437,10 @@ module RubyVM::YJIT
# Format large numbers with comma separators for readability
def format_number(pad, number)
- integer, decimal = number.to_s.split(".")
- d_groups = integer.chars.reverse.each_slice(3)
- with_commas = d_groups.map(&:join).join(',').reverse
- formatted = [with_commas, decimal].compact.join(".")
- formatted.rjust(pad, ' ')
+ s = number.to_s
+ i = s.index('.') || s.size
+ s.insert(i -= 3, ',') while i > 3
+ s.rjust(pad, ' ')
end
# Format a number along with a percentage over a total value