On Mon, 11 Mar 2024 14:42:03 GMT, Claes Redestad <redes...@openjdk.org> wrote:

>> Looks great to me. Sorry for the pings, but we may need @rgiulietti to 
>> verify the math correctness and @cl4es to comment on whether having these 2 
>> separate code paths or trying to extract a common part is the better 
>> approach.
>
>> Looks great to me. Sorry for the pings, but we may need @rgiulietti to 
>> verify the math correctness and @cl4es to comment on whether having these 2 
>> separate code paths or trying to extract a common part is the better 
>> approach.
> 
> I'd love to see less code duplication. It'd certainly be possible to refactor 
> to one internal constructor `BigDecimal(CharSequence)` that the 
> `String`-based constructors just delegates to, and then have the 
> `BigDecimal(char[])` variants call with some wrapping (e.g. 
> `this(CharBuffers.wrap(in, offset, len), mc)`). 
> 
> Such indirection might cost a few cycles per operation for the `char[]`-based 
> constructors due the need to wrap the `char[]`, but I wonder how performance 
> sensitive the `BigDecimal(char[], int, int)` paths really are once 
> `BigDecimal(String)` takes another path.

I second @cl4es concerns about code duplication.

While the µ-benchmarks show improvements, I wonder how much this impacts 
workloads out there.
In other words, we need to contrast a performance improvement that might 
impact, in some unknown measure, an unknown number of real-world workloads, 
with visible and known code duplication, code that needs maintenance over the 
next many many years.

IMO, @cl4es advice about code refactoring is worth giving a try, even if that 
costs some ns in the µ-benchmarks.

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

PR Comment: https://git.openjdk.org/jdk/pull/18177#issuecomment-1988777526

Reply via email to