From: SASADA Koichi Date: 2014-01-06T16:06:34+09:00 Subject: [ruby-core:59577] Re: [ruby-trunk - Bug #9262] global_method_cache should be configurable or grow automatically Hi, Now, method cache technique is important and we need more measurement and techniques. ## From Ruby 2.0, we use inline/global method cache aggressively. So performance impact on method cache miss has huge impact (compare with Ruby 1.8, 1.9), that guys already show. funny_falcon's approach is very impressive to solve this problem. However, now I'm not sure how it increase memory imapct. tmm1 measured the memory impact on https://bugs.ruby-lang.org/issues/9262#change-43840 . This survery is very impressive. I think it is better we measure other cases. For example, if some classes calls many methods at onece, it will memory issue. I think the simple limitation (cap) approach with funny_falcon's patch works fine. ## New years holiday (Japanese take holidays in new years week), I'm thinking about this issue. Some ideas are available. (1) inline cache (1-1) polymorphic inline cache (1-2) per class inline cache other than call site (1-3) per-method cache invalidation (2) global cache (2-1) per class method cache w/ cap Now the above ideas are not implemented/verified. And huge effort is needed (because we need to change the method entry data structure). Before the try, I need to know the why and how method cache is missed. ## Basically I don't against to introduce and backport some proposed patches (w/ measurement, if we can). In my opinion, simple variable global cache entry size approach will fine for backport. And also I try above ideas for Ruby 2.2. Current patches are good starting point, I think. -- // SASADA Koichi at atdot dot net