RFR: 8315454: Add an immutable BitSet
Viktor Klang
duke at openjdk.org
Fri Sep 1 09:56:40 UTC 2023
On Fri, 1 Sep 2023 08:21:13 GMT, Per Minborg <pminborg at openjdk.org> wrote:
> This PR proposes adding a new method to BitSet that provides an immutable snapshot of the set in the form of an `IntPredicate`.
>
> The predicate is eligible for constant folding.
>
> Here are some classes in the JDK that would benefit directly from constant-folding of BitSets:
>
> PoolReader (6)
> URLEncoder (1) - Updated in this PR
> HtmlTree (2)
>
> More over, the implementation of the predicate is @ValueBased and this would provide additional benefits in the future.
>
> Initial benchmarks with the URLEncoder show encouraging results:
>
>
> Name (encodeChars) (maxLength) (unchanged) Cnt Base Error Test Error Unit Diff%
> URLEncodeDecode.testEncodeUTF8 6 1024 0 15 2,371 ± 0,016 2,073 ± 0,184 ms/op 12,6% (p = 0,000*)
> URLEncodeDecode.testEncodeUTF8 6 1024 75 15 1,772 ± 0,013 1,387 ± 0,032 ms/op 21,8% (p = 0,000*)
> URLEncodeDecode.testEncodeUTF8 6 1024 100 15 1,230 ± 0,009 1,140 ± 0,011 ms/op 7,3% (p = 0,000*)
src/java.base/share/classes/java/util/BitSet.java line 1412:
> 1410: * <p>
> 1411: * Returned predicates are threadsafe and can be used without external synchronisation. Furthermore,
> 1412: * they are eligible for constant-folding optimization by the VM.
> Furthermore,
* they are eligible for constant-folding optimization by the VM.
I'd probably skip this unless there's prior art to describe the constant-fold-eligibility of returned values from methods. :)
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/15530#discussion_r1312826139
More information about the core-libs-dev
mailing list