Hi Jochen, I am still thinking about how to improve indy performance further in the method overload cases, e.g. ``` def same(String obj) { return obj } def same(int obj) { return obj } def same(float obj) { return obj } for (int i = 0; i < 100000; i++) { [1, 1.0f, '1.0'].each { same(it) } } ```
If we cache both receiver type and argument types, I find the performance of this case can be improved a lot, but other cases performance is reduced quite a bit too... so I am trying 2 levels cache: the 1st level cache is the current cache for receiver type, its size is fixed as 16 by default, and I want to add 2nd level cache is for caching argument types, its size will be fixed as 16 by default too. The 2 caches are seperated, so receiver types kept in 1st level cache will not be cleared, and 2nd level cache can provide more hot candidates for better performance. Cheers, Daniel.Sun ----- Apache Groovy committer & PMC member Blog: http://blog.sunlan.me Twitter: @daniel_sun -- Sent from: http://groovy.329449.n5.nabble.com/Groovy-Dev-f372993.html