On Wed, 25 Sep 2024 13:43:49 GMT, Claes Redestad <redes...@openjdk.org> wrote:

>> This PR suggests refactoring `ZipFile.Source.initCEN` to move as much logic 
>> as possible into the per-entry method processor. This inner method will be 
>> called often and JIT optimized earlier in the bootstrap sequence.
>> 
>> Startup tests using the OpenJDK benchmarks.jar show a ~1ms improvement on 
>> both my M1 macbook and my x64 wokstation, while we also improve on relevant 
>> throughput microbenchmarks:
>> 
>> 
>> Name               (size) Cnt       Base      Error        Test      Error  
>> Unit  Change
>> openCloseZipFile      512  15  61372.449 ± 1197.432   58081.423 ± 1751.988 
>> ns/op   1.06x (p = 0.000*)
>> openCloseZipFile     1024  15 117953.727 ± 3202.274  112548.875 ± 5126.665 
>> ns/op   1.05x (p = 0.001*)
>> openCloseZipFilex2    512  15  62141.795 ±  674.121   60520.017 ± 2438.346 
>> ns/op   1.03x (p = 0.017 )
>> openCloseZipFilex2   1024  15 117959.071 ± 1528.426  111773.937 ± 1604.412 
>> ns/op   1.06x (p = 0.000*)
>>   * = significant
>
> Claes Redestad has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Typo

There is a lot going on in this PR..

I've been playing with similar, but different ideas lately and I'm wondering if 
we could get away with less intrusive changes and still boost performance. 

Instead of pushing everything into `processNextCENEntry`, how about we instead 
extract methods for checking the fixed-length CEN header and for checking the 
variable-length CEN header fields (headerSize, extra and comment)?

Here's a sketch of what I'm thinking: 
https://github.com/openjdk/jdk/compare/master...eirbjo:initCEN-extract-validation?expand=0

This PR:


Benchmark                       (size)  Mode  Cnt       Score      Error  Units
ZipFileOpen.openCloseZipFile       512  avgt   15  104987.960 ? 4191.855  ns/op
ZipFileOpen.openCloseZipFile      1024  avgt   15  172605.991 ? 3546.599  ns/op
ZipFileOpen.openCloseZipFilex2     512  avgt   15  113737.426 ? 5797.246  ns/op
ZipFileOpen.openCloseZipFilex2    1024  avgt   15  189276.928 ? 3195.026  ns/op

  
My branch 


Benchmark                       (size)  Mode  Cnt       Score      Error  Units
ZipFileOpen.openCloseZipFile       512  avgt   15  100435.644 ? 2862.724  ns/op
ZipFileOpen.openCloseZipFile      1024  avgt   15  165181.306 ? 2445.885  ns/op
ZipFileOpen.openCloseZipFilex2     512  avgt   15  103644.570 ? 1615.982  ns/op
ZipFileOpen.openCloseZipFilex2    1024  avgt   15  170362.938 ? 3421.632  ns/op

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

PR Comment: https://git.openjdk.org/jdk/pull/21133#issuecomment-2374942705

Reply via email to