ZipFile: Improve performance for ZipFile.<init>

Avoid thousands of JNI transitions in the constructor. We can
quite easily check for invalid entry names and duplicates while
parsing the central directory in native code.

The benchmarks show that the median time for opening a file with 8192
entries decreased from 488ms to 120us.

AFTER:
    Trial Report (1 of 3):
      Experiment {instrument=runtime, benchmarkMethod=timeZipFileOpen, vm=default, parameters={numEntries=128}}
      Results:
        runtime(ns): min=112794.57, 1st qu.=113238.72, median=114539.28, mean=119694.66, 3rd qu.=125191.84, max=143145.02
    Trial Report (2 of 3):
      Experiment {instrument=runtime, benchmarkMethod=timeZipFileOpen, vm=default, parameters={numEntries=1024}}
      Results:
        runtime(ns): min=112868.04, 1st qu.=113582.70, median=115180.93, mean=117760.32, 3rd qu.=118067.87, max=137760.10
    Trial Report (3 of 3):
      Experiment {instrument=runtime, benchmarkMethod=timeZipFileOpen, vm=default, parameters={numEntries=8192}}
      Results:
        runtime(ns): min=112417.27, 1st qu.=114630.16, median=117272.70, mean=119197.74, 3rd qu.=122742.84, max=135330.50

BEFORE:
    Trial Report (1 of 3):
      Experiment {instrument=runtime, benchmarkMethod=benchmarkZipFileOpen, vm=default, parameters={numEntries=128}}
      Results:
        runtime(ns): min=9360144.37, 1st qu.=9559712.86, median=9839983.50, mean=9816559.27, 3rd qu.=10057399.81, max=10170918.14
    Trial Report (2 of 3):
      Experiment {instrument=runtime, benchmarkMethod=benchmarkZipFileOpen, vm=default, parameters={numEntries=1024}}
      Results:
        runtime(ns): min=60682471.64, 1st qu.=62388598.00, median=64319977.57, mean=66545494.60, 3rd qu.=72114121.64, max=77298980.57
    Trial Report (3 of 3):
      Experiment {instrument=runtime, benchmarkMethod=benchmarkZipFileOpen, vm=default, parameters={numEntries=8192}}
      Results:
        runtime(ns): min=485804479.00, 1st qu.=487322656.00, median=488986250.00, mean=489820034.67, 3rd qu.=492383229.50, max=495372604.00

bug: 27145664

Change-Id: I510e923ac54d52082b9eafa0f151ad4f71826333
4 files changed