On Fri, 6 Oct 2023 20:55:40 GMT, 温绍锦 <[email protected]> wrote: > @cl4es and @Glavo have already made some very good optimizations to > URLEncoder, but we can continue to improve. > > The current URLEncoder's Predicate for DONT_NEED_ENCODING is based on BitSet, > which is actually a table lookup. The actual performance may not be as good > as microbench. > > The character value range of DONT_NEED_ENCODING is between [45-122]. We can > construct two long type constants to do the work of BitSet. This can improve > performance by about 7% to 30%.
I drafted a PR that pulls off more or less the same optimization but does so by adding a variant to `ImmutableBitSetPredicate`. This ensures other `BitSet`-based predicates of 128 elements or less would get the similar benefit, and better contains the added complexity. ------------- PR Comment: https://git.openjdk.org/jdk/pull/16082#issuecomment-1752163233
