On Wed, 6 Sep 2023 10:20:17 GMT, Quan Anh Mai <qa...@openjdk.org> wrote:
>> 温绍锦 has updated the pull request incrementally with one additional commit >> since the last revision: >> >> update copyright date info > > We can consolidate the implementation of `Integer::toString` and > `Integer::toUnsignedString` by taking the absolute value of the signed > integer and move the later operation to unsigned domain. This helps remove > the need of relying on much more expensive `BigInteger` when invoking > `Long::toUnsignedString` and may improve the performance of > `Integer::toUnsignedString` a little bit. Computing in unsigned domain is > also faster (`x s/ 100 = (x * 1374389535) >> 37 - (x >> 31)` while `x u/ 100 > = (x * 1374389535) >>> 37`). Folding of unsigned division is still in review > but we can use `(int)(((long)x * 1374389535) >>> 37)` for `int` and `mulhi(x > >>> 2, 2951479051793528259) >>> 2` for `long` directly. > > Thanks. @merykitty This PR has been more than 2 months, 19 commits, 55 conversations, the optimization of this PR is mainly to merge two caches into one cache and use unsafe.setShort to write two numbers at a time. Can we finish merging this PR first, and then open a new PR to implement your suggestion? ------------- PR Comment: https://git.openjdk.org/jdk/pull/14699#issuecomment-1708586068