Project

General

Profile

Actions

Feature #8366

open

Exception.message take time to execute depending on the instance variables

Added by anuraguniyal (anurag uniyal) over 11 years ago. Updated about 10 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:54767]

Description

I am seeing very interesting and catastrophic behavior with ruby, see the code below

class ExceptionTest

  def test
    @result = [0]*500000

    begin
      no_such_method
    rescue Exception => ex
      puts "before #{ex.class}"
      st = Time.now
      ex.message
      puts "after #{Time.now-st} #{ex.message}"
    end

  end
end

ExceptionTest.new.test

Ideally ex.message should not take any time to execute and hence Time taken should be in ms, but here is the output

ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.4.2]
before NameError
after 0.462443 undefined local variable or method `no_such_method' for #<ExceptionTest:0x007fc74a84e4f0>

If I assign [0]*500000 to a local variable instead of instance variable e.g. result = [0]*500000 it runs as expected

ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.4.2]
before NameError
after 2.8e-05 undefined local variable or method `no_such_method' for #<ExceptionTest:0x007ff59204e518>

It looks like somehow ex.message is looping thru the instance variables, why it would do so, please enlighten me!

I have tried it on ruby ruby-1.9.2-p290, ruby-1.9.1-p376 and whatever version the ruby on codepad.org is.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0