From: SASADA Koichi Date: 2011-08-24T06:59:12+09:00 Subject: [ruby-dev:44415] Re: [Ruby 1.9 - Bug #5217] lineno is broken when source code has about 7000 lines  ささだです. (2011/08/23 7:43), Yusuke Endoh wrote: > 直そうと思えば、以下のようにすれば直ります。しかしあえて short を選んで > いるのは省メモリ化のためだと思いますので、これは既知の制限ということで > しょうか > ささださん  どうもすみません.  色々考えて,遠藤さんに IRC でアドバイスしてもらった,「改行位置が変 わったところだけ情報を付ける」という方法でやり直しました.  ある大きな Rails アプリで,ロード後にバイトコード全部のサイズを測った ところ (*1), 改善前:24,699,850 B(約 24.7MB) 改善後:21,835,244 B(約 21.8MB) となりました.32bit 環境です: ruby 1.9.4dev (2011-08-22 trunk 33022) [i686-linux]. *1: objspace を使うと,こんな風に測れます. require 'objspace' p ObjectSpace.memsize_of_all(RubyVM::InstructionSequence) exit! これを,rack-*/lib/rack/handler/webrick.rb の self.run に無理矢理書き加えるというかっこ悪さ. もうちょっとなんとかならないかな.  バイトコードのサイズ自体は,fork した後で共有できるとかあるので,あん まり削減しても嬉しくないような気もしますが,まぁちょっとは効果があったと いうことで.  パッチ自体は結構大きくなりました. http://www.atdot.net/sp/view/wpheql/readonly?lang=diff  コミットしてもいいでしょうか.って,trunk ならさくっと入れちゃえばいい かなぁ. -- // SASADA Koichi at atdot dot net