ClassValue perf?
Jochen Theodorou
blackdrag at gmx.org
Mon Apr 27 17:50:08 UTC 2015
Am 27.04.2015 19:17, schrieb Charles Oliver Nutter:
> It seems I may have to write some benchmarks for this then. Just so I
> understand, the equivalent non-ClassValue-based store would need to:
>
> * Be atomic; value may calculate more than once but only be set once.
> * Be weak; classes given class values must not be rooted as a result
> (an external impl like in JRuby or Groovy would have to use weak maps
> for this).
>
> Jochen: Is your class-to-metaclass map usable apart from the Groovy codebase?
Yes. Look for org.codehaus.groovy.reflection.GroovyClassValuePreJava7
which is normally wrapped by a factory. You can do for example
> final AtomicInteger counter = new AtomicInteger();
> GroovyClassValue<String> classValue = new GroovyClassValuePreJava7(new ComputeValue<String>() {
> String computeValue(Class<?> type){
> counter.incrementAndGet()
> return type.name;
> }});
normally of course we don't store strings, normally we store ClassInfo
objects, which then break down to the meta classes and per instance meta
classes ;)
bye blackdrag
--
Jochen "blackdrag" Theodorou
blog: http://blackdragsview.blogspot.com/
More information about the mlvm-dev
mailing list