RFR [15] 8248233: Avoid superfluous Class::isRecord invocations during deserialization
Peter Levart
peter.levart at gmail.com
Wed Jun 24 16:25:24 UTC 2020
Hi Chris,
The patch looks good.
Before the patch it made sense to have if (cl != null) in line 750 in
ObjectStreamClass, but now nothing in the if block depends on cl, so you
could use if (osc != null) instead. It is true that:
(cl != null) == (osc != null)
always holds there, but reading the code is easier that way, don't you
think? Maybe you could even consider merging the content of this if
block into the similar if block that starts in line 771?
Regards, Peter
On 6/24/20 5:46 PM, Chris Hegarty wrote:
> A micro-optimisation noticed when working on JDK-8247532.
>
> For further details see:
> https://mail.openjdk.java.net/pipermail/core-libs-dev/2020-June/067446.html
>
> Webrev:
> https://cr.openjdk.java.net/~chegar/8248233/webrev.00/
>
> before:
> RecordSerializationBench.deserializeClasses10avgt 10 13.874 ±1.445us/op
> RecordSerializationBench.deserializeClasses 100 avgt 10
> 57.839 ± 3.944 us/op
> RecordSerializationBench.deserializeClasses 1000 avgt 10
> 515.483 ± 57.275 us/op
> RecordSerializationBench.deserializeRecords 10 avgt 10
> 13.563 ± 0.459 us/op
> RecordSerializationBench.deserializeRecords 100 avgt 10
> 61.704 ± 2.481 us/op
> RecordSerializationBench.deserializeRecords 1000 avgt 10
> 518.671 ± 19.147 us/op
> after:
> RecordSerializationBench.deserializeClasses10avgt 10 16.021 ±9.091us/op
> RecordSerializationBench.deserializeClasses 100 avgt 10
> 58.550 ± 2.164 us/op
> RecordSerializationBench.deserializeClasses 1000 avgt 10
> 524.930 ± 49.663 us/op
> RecordSerializationBench.deserializeRecords 10 avgt 10
> 12.567 ± 0.711 us/op
> RecordSerializationBench.deserializeRecords 100 avgt 10
> 50.235 ± 1.977 us/op
> RecordSerializationBench.deserializeRecords 1000 avgt 10
> 421.557 ± 17.348 us/op
>
> -Chris.
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8247532
More information about the core-libs-dev
mailing list