Oliver Heger wrote:
Do you think that a generic implementation of the lazy initialization pattern has such an impact on performance?

In a typical implementation you would add the initializer as a final member field to a class:

public class MyClass {
    private final MyConcreteLazyInitializer init =
        new MyConcreteLazyInitializer();
}

The initializer instance has to be created once. Then, on each access to the object managed by the initializer you have to call init.get() instead of accessing the volatile field directly.

Perhaps we should run some benchmarks to find out whether this difference really matters?

Writing benchmarks for this kind of thing would be very difficult I suspect, and subject to JVM and GC.

One point about this object is that it will be long-lived - the initializer will live as long as the instance of the parent object. This will certainly have some GC impact.

Maybe it comes down to a question of whether I personally would use this approach. I wouldn't, firstly because lazy initialization is so rare, and secondly because in those cases I'd prefer to inline the code.

Stephen

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to