Hi all,
As you might noticed, there is active work on serialization
performance improvements [1]. So far we had committed 4 patches
concerning scalability and boosted the performance on multi-threaded
serialization benchmarks more than 2x times. And this is not the end
of the journey: more issues coming.
Dear committers, can you please review and commit the patches in ready JIRAs?
I will be happy if these two committed:
a. [classlib][luni][performance] ObjectInputStream/ObjectOutputStream
can use optimized API for accessing fields - available at [2]
This issue moves the setField/getField functionality to ObjectAccessor
utility class. This eliminates one serious problem: creation of string
during field name lookup on native side. The second advantage is that
this solution checks security on accessor creation rather than on
every call (like Reflection API does). This improvement gives another
30-120% boost for serialization workload.
I expect more with rewriting these accessors on magics, thus
eliminating JNI overhead and native-side work. Those who interested in
this topic, feel free to join in corresponding JIRA [3].
b. [classlib][luni][performance] j.u.IdentityHashMap ariphmetic
improvements - available at [4]
After the moving of ObjectStreamClass cache to ThreadLocalCache [5],
performance of serialization depends on ThreadLocal performance and
then on IdentityHashMap performance. Simple benchmark shows that
ThreadLocal performance is devastating: 50x slower than Sun 1.6.0_05
[6]. This is very first ready patch from that chain of issues. It
brings up +300% boost on ThreadLocal benchmark and +10% boost to
serialization benchmark.
Thanks,
Aleksey.
[1] https://issues.apache.org/jira/browse/HARMONY-5632
[2] https://issues.apache.org/jira/browse/HARMONY-5722 (ready)
[3] https://issues.apache.org/jira/browse/HARMONY-5725
[4] https://issues.apache.org/jira/browse/HARMONY-5718 (ready)
[5] https://issues.apache.org/jira/browse/HARMONY-5633
[6] https://issues.apache.org/jira/browse/HARMONY-5703