RFR: 8255299: Drop explicit zeroing at instantiation of Atomic* objects [v2]
Сергей Цыпанов
github.com+10835776+stsypanov at openjdk.java.net
Wed Oct 28 08:44:40 UTC 2020
> As discussed in https://github.com/openjdk/jdk/pull/510 there is never a reason to explicitly instantiate any instance of `Atomic*` class with its default value, i.e. `new AtomicInteger(0)` could be replaced with `new AtomicInteger()` which is faster:
> @State(Scope.Thread)
> @OutputTimeUnit(TimeUnit.NANOSECONDS)
> @BenchmarkMode(value = Mode.AverageTime)
> public class AtomicBenchmark {
> @Benchmark
> public Object defaultValue() {
> return new AtomicInteger();
> }
> @Benchmark
> public Object explicitValue() {
> return new AtomicInteger(0);
> }
> }
> THis benchmark demonstrates that `explicitValue()` is much slower:
> Benchmark Mode Cnt Score Error Units
> AtomicBenchmark.defaultValue avgt 30 4.778 ± 0.403 ns/op
> AtomicBenchmark.explicitValue avgt 30 11.846 ± 0.273 ns/op
> So meanwhile https://bugs.openjdk.java.net/browse/JDK-8145948 is still in progress we could trivially replace explicit zeroing with default constructors gaining some performance benefit with no risk.
>
> I've tested the changes locally, both tier1 and tier 2 are ok.
>
> Could one create an issue for tracking this?
Сергей Цыпанов has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains one additional commit since the last revision:
8255299: Drop explicit zeroing at instantiation of Atomic* objects
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/818/files
- new: https://git.openjdk.java.net/jdk/pull/818/files/c1fb362f..7dc646d0
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=818&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=818&range=00-01
Stats: 4576 lines in 201 files changed: 2659 ins; 1135 del; 782 mod
Patch: https://git.openjdk.java.net/jdk/pull/818.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/818/head:pull/818
PR: https://git.openjdk.java.net/jdk/pull/818
More information about the security-dev
mailing list