On Mon, 11 Jul 2022 08:02:43 GMT, Сергей Цыпанов <d...@openjdk.org> wrote:

>> The new constructor looks very odd, especially when it does not have an 
>> explanation and doesn't describe the required preconditions for calling it.  
>> Is there a better way than adding a non-functional argument?
>> The "unused" name is going to draw a warning from IntelliJ and some 
>> enterprising developer is going to try to remove it, not understanding why 
>> its there. And there is a bit of overhead pushing the extra arg.
>> 
>> The constructor should be private, it has a very narrow scope of use given 
>> the lack of checking its args.
>> 
>> It would be nice if the Hotspot compiler would recognize the llmits on the 
>> range and optimize away the checks;
>> it would have broader applicability then this point fix.
>> I would be interesting to ask the compiler folks if that's a future 
>> optimization.
>> These source changes make it harder to understand what's happening where; 
>> though that is sometimes work it for a noticeable performance improvement.
>
> Well, we already have e.g. `String(char[], int, int, Void)` and 
> `String(AbstractStringBuilder asb, Void sig)` where trailing argument is for 
> disambiguation against private constructors. I did the same for mine and 
> applied the same naming as in other trailing `Void` params.

Benchmark results after:

Benchmark                                                  Mode  Cnt  Score   
Error  Units
StringConstructor.newStringFromArray                       avgt   50  4,354 ± 
0,195  ns/op
StringConstructor.newStringFromArrayWithCharset            avgt   50  4,035 ± 
0,088  ns/op
StringConstructor.newStringFromArrayWithCharsetName        avgt   50  8,166 ± 
0,062  ns/op
StringConstructor.newStringFromRangedArray                 avgt   50  4,132 ± 
0,054  ns/op
StringConstructor.newStringFromRangedArrayWithCharset      avgt   50  4,416 ± 
0,206  ns/op
StringConstructor.newStringFromRangedArrayWithCharsetName  avgt   50  7,421 ± 
0,041  ns/op

-------------

PR: https://git.openjdk.org/jdk/pull/9407

Reply via email to