Skip to content

Commit

Permalink
Detect multiple lines output simplify
Browse files Browse the repository at this point in the history
The old implementation performance test code:

    require 'objspace'
    puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001)
    /\A.*\Z/ !~ ('abc' * 20_000_000)
    puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001)

and run `time test.rb`:

    2.5868 MB
    62.226 MB

    real    0m1.307s
    user    0m0.452s
    sys     0m0.797s

The new implementation performance test code:

    require 'objspace'
    puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001)
    ('abc' * 20_000_000).include?("\n")
    puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001)

and run `time test.rb`:

    2.5861 MB
    62.226 MB

    real    0m0.132s
    user    0m0.088s
    sys     0m0.042s
  • Loading branch information
aycabta committed Feb 25, 2020
1 parent cc42036 commit 40d6610
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion lib/irb.rb
Expand Up @@ -738,7 +738,7 @@ def prompt(prompt, ltype, indent, line_no) # :nodoc:

def output_value # :nodoc:
str = @context.inspect_last_value
multiline_p = /\A.*\Z/ !~ str
multiline_p = str.include?("\n")
if multiline_p && @context.newline_before_multiline_output?
printf @context.return_format, "\n#{str}"
else
Expand Down

0 comments on commit 40d6610

Please sign in to comment.