RFR: 8315585: Optimization for new BigDecimal(String)
Shaojin Wen
duke at openjdk.org
Mon Mar 11 11:15:14 UTC 2024
On Sun, 10 Mar 2024 20:27:56 GMT, Chen Liang <liach at openjdk.org> wrote:
> Good idea! Since we are now maintaining two code paths, when we update one, we might forget about the other; is it possible to create another interal constructor that takes a `CharSequence`, so we can pass the string in directly, and we pass the `char[]` via `CharBuffer.wrap()`?
Your suggestion could reduce duplicate code, but it would make new BigDecimal(char[]) slower. Some programs have already optimized specifically for char[], such as:
https://github.com/mysql/mysql-connector-j/blob/release/8.x/src/main/protocol-impl/java/com/mysql/cj/protocol/a/MysqlBinaryValueDecoder.java#L275
package com.mysql.cj.protocol.a;
public class MysqlBinaryValueDecoder {
public <T> T decodeDecimal(byte[] bytes, int offset, int length, ValueFactory<T> vf) {
BigDecimal d = new BigDecimal(StringUtils.toAsciiCharArray(bytes, offset, length));
return vf.createFromBigDecimal(d);
}
}
-------------
PR Comment: https://git.openjdk.org/jdk/pull/18177#issuecomment-1987461885
More information about the core-libs-dev
mailing list