From: "tmm1 (Aman Gupta)" Date: 2013-12-03T17:29:55+09:00 Subject: [ruby-core:58831] [ruby-trunk - Bug #9201] [patch] remove GC overhead for loaded_features_index Issue #9201 has been updated by tmm1 (Aman Gupta). With this patch along with the one in r43973, minor GC pauses are now up to 45% shorter in our application. 10.times{ s=Time.now; GC.start_minor; p Time.now-s } # r43972 0.034701 0.034337 0.038741 0.034126 0.037504 0.033009 0.034526 0.033238 0.034232 0.032667 # r43973 0.029089 0.027402 0.027296 0.026581 0.028211 0.026294 0.028213 0.030031 0.026412 0.02695 # r43974 0.024061 0.021339 0.022207 0.022007 0.022716 0.02303 0.022139 0.021704 0.022118 0.021611 ---------------------------------------- Bug #9201: [patch] remove GC overhead for loaded_features_index https://bugs.ruby-lang.org/issues/9201#change-43393 Author: tmm1 (Aman Gupta) Status: Closed Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: Target version: current: 2.1.0 ruby -v: ruby 2.1.0dev (2013-12-02 trunk 43955) Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN I was profiling minor GC in our app and noticed 15% of time spent in mark_tbl for loaded_features_index. The following patch removes this overhead by storing feature offsets outside the ruby heap: https://github.com/tmm1/ruby/commit/d03c5ece865422f0510957c1dee1d33a1d9eca82 -- http://bugs.ruby-lang.org/