From: Yukihiro Matsumoto Date: 2010-05-30T23:33:47+09:00 Subject: [ruby-dev:41473] Re: NoMethodErrorなどのmessage まつもと ゆきひろです In message "Re: [ruby-dev:41471] Re: NoMethodErrorなどのmessage" on Sun, 30 May 2010 16:09:41 +0900, Masatoshi SEKI writes: |とても長いっぷりは、RWikiのプロセスが1Gを超えるんですが |その根になるオブジェクトへのNoMethodErrorのときなどに |とても待たされます、って感じです。 となると、問題になるのはNoMethodErrorではなくてinspectであっ て、かつ問題になりそうな対象がわかってるんですから、その根と なるオブジェクトのinspectを再定義するのはどうでしょうか。そ れとも、単なる配列とかなのかな? |-- |a = Array.new(ARGV.shift.to_i) | |begin | a.foo |rescue | Marshal.dump($!) |end |-- | |こんなのを書いて、profileとるとinspectが呼ばれているのがわかります。 なるほど。ご指摘のように |Marshal.dumpのほうは、 | | rb_define_method(rb_cNameErrorMesg, "_dump", name_err_mesg_to_str, 1); | |が関係あるのかなあと想像してます。 のせいでしょうね。この辺は中田さんのコードなので、早急に判断 できないのですが、ここはなんらかの対処した方が良いかもしれま せん。 まつもと ゆきひろ /:|)