On Tue, 10 Aug 2021 17:39:01 GMT, Сергей Цыпанов <github.com+10835776+stsypa...@openjdk.org> wrote:
>> src/java.base/share/classes/java/lang/Integer.java line 1450: >> >>> 1448: >>> 1449: try { >>> 1450: result = parseInt(nm.substring(index), radix); >> >> Possibly a follow-up, but I think using `parseInt/-Long(nm, index, >> nm.length(), radix)` could give an additional speed-up in these cases (by >> avoiding a substring allocation). > > Good point! Let me check this. Indeed, looks like getting rid of `substring()` call makes things faster: before Benchmark (size) Mode Cnt Score Error Units Integers.decode 500 avgt 15 11.444 ? 0.949 us/op Integers.parseInt 500 avgt 15 8.669 ? 0.152 us/op Integers.toStringBig 500 avgt 15 10.295 ? 0.612 us/op Integers.toStringSmall 500 avgt 15 7.020 ? 0.581 us/op Benchmark (size) Mode Cnt Score Error Units Longs.decode 500 avgt 15 29.568 ? 9.785 us/op Longs.repetitiveSubtraction 500 avgt 15 0.820 ? 0.153 us/op Longs.toStringBig 500 avgt 15 13.418 ? 0.744 us/op Longs.toStringSmall 500 avgt 15 8.180 ? 0.780 us/op after Benchmark (size) Mode Cnt Score Error Units Integers.decode 500 avgt 15 7.377 ? 0.040 us/op Integers.parseInt 500 avgt 15 8.720 ? 0.230 us/op Integers.toStringBig 500 avgt 15 10.328 ? 0.266 us/op Integers.toStringSmall 500 avgt 15 6.913 ? 0.178 us/op Benchmark (size) Mode Cnt Score Error Units Longs.decode 500 avgt 15 8.373 ? 0.708 us/op Longs.repetitiveSubtraction 500 avgt 15 0.771 ? 0.003 us/op Longs.toStringBig 500 avgt 15 13.126 ? 0.079 us/op Longs.toStringSmall 500 avgt 15 6.915 ? 0.259 us/op ------------- PR: https://git.openjdk.java.net/jdk/pull/5068