As of build 64, the performance regression in the reflection implementation
(reported in bug 4430358) still leaves the example program
(see attatchement) running more than 300% slower on build 64 than
a 1.3 VM which uses the *same* classes from the java.beans package.
The example program runs in under 10s on 1.3 FCS and 34s on 1.4 (b64).
The classes in the java.beans package have been optimised over
these builds and have become more than twice as fast on the 1.3 VM -
so it is critical to use the same versions of the classses in
the java.beans package to make an independent evaluation of the
performance regression in the classes in the reflection implementation.
We agree that the modifactions made to the example program may
make it a more common use case for the intended audience of the archiving
code than the one demonstrated by this example program. Even so, many programs
which use the reflection package will have similar performance characteristics
to the unmodified test and will also see a 300% slowdown over 1.3.
The performance boost to the stated benchmarks is indeed a good thing, but
the new code in java.lang.Class leaves us optimistic that implementations
exist that would allow good performance in both these cases - instead
of forcing this kind of tradeoff.
(reported in bug 4430358) still leaves the example program
(see attatchement) running more than 300% slower on build 64 than
a 1.3 VM which uses the *same* classes from the java.beans package.
The example program runs in under 10s on 1.3 FCS and 34s on 1.4 (b64).
The classes in the java.beans package have been optimised over
these builds and have become more than twice as fast on the 1.3 VM -
so it is critical to use the same versions of the classses in
the java.beans package to make an independent evaluation of the
performance regression in the classes in the reflection implementation.
We agree that the modifactions made to the example program may
make it a more common use case for the intended audience of the archiving
code than the one demonstrated by this example program. Even so, many programs
which use the reflection package will have similar performance characteristics
to the unmodified test and will also see a 300% slowdown over 1.3.
The performance boost to the stated benchmarks is indeed a good thing, but
the new code in java.lang.Class leaves us optimistic that implementations
exist that would allow good performance in both these cases - instead
of forcing this kind of tradeoff.
- relates to
-
JDK-4430358 Major performance regression in reflection APIs in some common use-cases
-
- Closed
-
-
JDK-4279970 Reflection performance
-
- Closed
-