On Sat, 26 Apr 2025 09:21:32 GMT, Shaojin Wen <s...@openjdk.org> wrote:

>> In the Throwable::printStackTrace method, StringBuilder is created multiple 
>> times to build String. By sharing StringBuilder to build String, object 
>> allocation and copying are reduced.
>> 
>> In the scenario without suppressed and ourCause, unused IdentityHashMap is 
>> not created.
>> 
>> Through these optimizations, the performance of `new 
>> Exception().printStackTrace()` can be improved by about 10%.
>
> Shaojin Wen has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   fix benchmark, use FileOutputStream

Below are the performance numbers on Aliyun ECS c8a (x64 AMD CPU EPYC™ Genoa + 
Linux), The results show that writing FileOutputStream on the cloud host still 
has a performance improvement of 5% to 7%.


git remote addd wenshao https://github.com/wenshao/jdk

# baseline
git checkout 53873fb2178add153d1a6edb932a915fc1c63dc6
make test TEST="micro:java.lang.Throwables"

# current
git checkout e40726c1c0dfcbc284010b187e3203617afef519
make test TEST="micro:java.lang.Throwables"




# baseline 53873fb2178add153d1a6edb932a915fc1c63dc6
-Benchmark                           Mode  Cnt      Score     Error  Units
-Throwables.printEnclosedStackTrace  avgt   15  60816.939 ± 556.481  ns/op
-Throwables.printStackTrace          avgt   15  98745.841 ± 680.632  ns/op

# current e40726c1c0dfcbc284010b187e3203617afef519
Benchmark                           Mode  Cnt      Score      Error  Units
+Throwables.printEnclosedStackTrace  avgt   15  56417.649 ± 2310.963  ns/op 
+7.79%
+Throwables.printStackTrace          avgt   15  93265.294 ± 3014.466  ns/op 
+5.87%

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

PR Comment: https://git.openjdk.org/jdk/pull/24864#issuecomment-2831999128

Reply via email to