From eb2abc3f16685979ea87861900fb33b3a975589e Mon Sep 17 00:00:00 2001 From: Mau Magnaguagno Date: Wed, 8 Nov 2023 12:37:19 -0300 Subject: YJIT: refactor format_number (#8869) Replace enumerators with simpler and faster version that only inserts commas before '.' or end of integer string. --- yjit.rb | 9 ++++----- 1 file 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 -- cgit v1.2.3