On Sun, 22 Jan 2023 09:50:21 GMT, Sergey Tsypanov <stsypa...@openjdk.org> wrote:

>> Currently it's O(n) - we do `n` shifts of bytes within `StringBuilder`. This 
>> can be reduced to O(1) improving the code like:
>> 
>> DateTimeFormatter dtf = new DateTimeFormatterBuilder()
>>   .appendLiteral("Date:")
>>   .padNext(20, ' ')
>>   .append(DateTimeFormatter.ISO_DATE)
>>   .toFormatter();
>> String text = dtf.format(LocalDateTime.now());
>
> Sergey Tsypanov has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains two additional 
> commits since the last revision:
> 
>  - Merge branch 'master' into dtfb
>  - Improve padding of DateTimeFormatter

Benchmarking:

make test TEST="micro:time.format.DateTimeFormatterBench" MICRO="OPTIONS=-prof 
gc"

master

Benchmark                                                          Mode  Cnt    
 Score      Error   Units
DateTimeFormatterBench.formatWithPadding                          thrpt   15  
1621.744 ±  216.203  ops/ms
DateTimeFormatterBench.formatWithPadding:·gc.alloc.rate           thrpt   15   
295.938 ±   39.238  MB/sec
DateTimeFormatterBench.formatWithPadding:·gc.alloc.rate.norm      thrpt   15   
192.000 ±    0.001    B/op
DateTimeFormatterBench.formatWithPadding:·gc.count                thrpt   15    
23.000             counts
DateTimeFormatterBench.formatWithPadding:·gc.time                 thrpt   15   
353.000                 ms
DateTimeFormatterBench.formatWithZeroPadding                      thrpt   15  
2787.775 ± 1383.428  ops/ms
DateTimeFormatterBench.formatWithZeroPadding:·gc.alloc.rate       thrpt   15   
401.775 ±  201.097  MB/sec
DateTimeFormatterBench.formatWithZeroPadding:·gc.alloc.rate.norm  thrpt   15   
152.000 ±    0.001    B/op
DateTimeFormatterBench.formatWithZeroPadding:·gc.count            thrpt   15    
22.000             counts
DateTimeFormatterBench.formatWithZeroPadding:·gc.time             thrpt   15   
396.000                 ms


dtfb

Benchmark                                                          Mode  Cnt    
  Score     Error   Units
DateTimeFormatterBench.formatWithPadding                          thrpt   15   
5489.480 ± 200.120  ops/ms
DateTimeFormatterBench.formatWithPadding:·gc.alloc.rate           thrpt   15   
1171.637 ±  42.648  MB/sec
DateTimeFormatterBench.formatWithPadding:·gc.alloc.rate.norm      thrpt   15    
224.000 ±   0.001    B/op
DateTimeFormatterBench.formatWithPadding:·gc.count                thrpt   15    
 62.000            counts
DateTimeFormatterBench.formatWithPadding:·gc.time                 thrpt   15    
342.000                ms
DateTimeFormatterBench.formatWithZeroPadding                      thrpt   15  
14355.239 ± 640.377  ops/ms
DateTimeFormatterBench.formatWithZeroPadding:·gc.alloc.rate       thrpt   15   
2078.802 ±  93.278  MB/sec
DateTimeFormatterBench.formatWithZeroPadding:·gc.alloc.rate.norm  thrpt   15    
152.000 ±   0.001    B/op
DateTimeFormatterBench.formatWithZeroPadding:·gc.count            thrpt   15    
 77.000            counts
DateTimeFormatterBench.formatWithZeroPadding:·gc.time             thrpt   15    
555.000                ms

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

PR Comment: https://git.openjdk.org/jdk/pull/12131#issuecomment-1483302436

Reply via email to