On Fri, 6 Sep 2024 09:58:58 GMT, Shaojin Wen <s...@openjdk.org> wrote:

> PR #20772 introduced an optimization for writeUTF, which can also be used in 
> DataOutputStream::writeUTF.

Below are the performance numbers running on a MacBook M1 Pro. Both 
DataOutputStreamBench::writeUTF and ObjectOutputStream::writeUTF have been 
significantly improved in various character sets.

## 1.1 Script


git remote add wenshao g...@github.com:wenshao/jdk.git
git fetch wenshao

# baseline
git chekcout 42f47a8979f20457114e7c63d28d66db044b23dd
make test TEST="micro:java.io.DataOutputStreamBench"

# current
git checkout 30786c277bc006db6a55be267673878d7ea8db9b
make test TEST="micro:java.io.DataOutputStreamBench"


## 1.2 Performance Numbers

-# baseline
-Benchmark                                (charType)  Mode  Cnt   Score    
Error  Units
-DataOutputStreamBench.dataOutwriteUTF         ascii  avgt   12  13.202 ?  
0.238  us/op
-DataOutputStreamBench.dataOutwriteUTF  utf8_2_bytes  avgt   12  16.771 ?  
0.145  us/op
-DataOutputStreamBench.dataOutwriteUTF  utf8_3_bytes  avgt   12  48.448 ?  
0.112  us/op
-DataOutputStreamBench.dataOutwriteUTF         emoji  avgt   12  53.540 ? 
30.963  us/op
-DataOutputStreamBench.objectWriteUTF          ascii  avgt   12   8.800 ?  
0.017  us/op
-DataOutputStreamBench.objectWriteUTF   utf8_2_bytes  avgt   12  35.113 ?  
0.058  us/op
-DataOutputStreamBench.objectWriteUTF   utf8_3_bytes  avgt   12  36.352 ?  
0.152  us/op
-DataOutputStreamBench.objectWriteUTF          emoji  avgt   12  56.454 ?  
0.069  us/op

+# current
+Benchmark                                (charType)  Mode  Cnt   Score   Error 
 Units
+DataOutputStreamBench.dataOutwriteUTF         ascii  avgt   12   5.292 ? 0.040 
 us/op
+DataOutputStreamBench.dataOutwriteUTF  utf8_2_bytes  avgt   12  11.678 ? 0.105 
 us/op
+DataOutputStreamBench.dataOutwriteUTF  utf8_3_bytes  avgt   12  27.907 ? 0.048 
 us/op
+DataOutputStreamBench.dataOutwriteUTF         emoji  avgt   12  49.144 ? 0.176 
 us/op
+DataOutputStreamBench.objectWriteUTF          ascii  avgt   12   4.693 ? 0.032 
 us/op
+DataOutputStreamBench.objectWriteUTF   utf8_2_bytes  avgt   12  16.993 ? 0.028 
 us/op
+DataOutputStreamBench.objectWriteUTF   utf8_3_bytes  avgt   12  23.619 ? 0.115 
 us/op
+DataOutputStreamBench.objectWriteUTF          emoji  avgt   12  41.335 ? 0.372 
 us/op


|   | charType | baseline  | current | delta |
| --- | --- | --- | --- | --- |
| DataOutputStreamBench.dataOutwriteUTF | ascii | 13.202 | 5.292 | 149.47% |
| DataOutputStreamBench.dataOutwriteUTF | utf8_2_bytes | 16.771 | 11.678 | 
43.61% |
| DataOutputStreamBench.dataOutwriteUTF | utf8_3_bytes | 48.448 | 27.907 | 
73.61% |
| DataOutputStreamBench.dataOutwriteUTF | emoji | 53.540 | 49.144 | 8.95% |
| DataOutputStreamBench.objectWriteUTF | ascii | 8.800 | 4.693 | 87.51% |
| DataOutputStreamBench.objectWriteUTF | utf8_2_bytes | 35.113 | 16.993 | 
106.63% |
| DataOutputStreamBench.objectWriteUTF | utf8_3_bytes | 36.352 | 23.619 | 
53.91% |
| DataOutputStreamBench.objectWriteUTF | emoji | 56.454 | 41.335 | 36.58% |

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

PR Comment: https://git.openjdk.org/jdk/pull/20886#issuecomment-2335108105

Reply via email to