Updated webrev at https://cr.openjdk.java.net/~weijun/8162628/webrev.01/. The 
only change is using CertificateFactory.

I tried piped streams and it's even slower.

--Max


> On Aug 29, 2019, at 8:21 AM, Weijun Wang <weijun.w...@oracle.com> wrote:
> 
> 
> 
>> On Aug 28, 2019, at 11:00 PM, Sean Mullan <sean.mul...@oracle.com> wrote:
>> 
>> On 8/27/19 9:18 AM, Weijun Wang wrote:
>>> Oops, sorry. I was calling "new X509CertImp" in PEM keystore and this has 
>>> not made use of the cache in X509Factory, and since my benchmark test loads 
>>> keystores hundreds of times it's certainly much slower than JKS.
>>> I've disabled the cache and now PEM is only around 20% slower than JKS. I'm 
>>> sure some optimization will make it even smaller.
>> 
>> Do you have an updated webrev?
> 
> No. I tried some code changes but there is no performance enhancement.
> 
> --Max
> 
>> 
>> --Sean
>> 
>>> --Max
>>>> On Aug 22, 2019, at 11:47 PM, Weijun Wang <weijun.w...@oracle.com> wrote:
>>>> 
>>>> 
>>>> 
>>>>> On Aug 22, 2019, at 10:40 PM, Sean Mullan <sean.mul...@oracle.com> wrote:
>>>>> 
>>>>> On 8/14/19 10:07 AM, Weijun Wang wrote:
>>>>>> The difference will be big. I've simplified the logic into
>>>>>> 1. read bytes between first ": " and \r\n as alias
>>>>>> 2. read bytes between first \r\n after first "-" and next "-" as a cert
>>>>>> 3. goto 1
>>>>>> And I only store the cert bytes and do not create a Certificate until 
>>>>>> getCertificate() is read. I even haven't de-BASE64 them.
>>>>>> Time spent is still ~2.5x of JKS (when reading from a 
>>>>>> ByteArrayInputStream).
>>>>>> I guess the major reason is that there is no length field for the cert, 
>>>>>> so we must read-and-check all the time.
>>>>> 
>>>>> Could you store the length as an attribute, perhaps?
>>>> 
>>>> I'm reluctant to do that. This means people cannot edit the file with a 
>>>> text editor and have to use keytool to manage it.
>>>> 
>>>> Of course, this file is still PEM and can be used by other tools, just 
>>>> that they should not try to modify it.
>>>> 
>>>> I'll see if there are other ways to improve the performance. One way I'm 
>>>> thinking about is to read the first few bytes of a cert to find out the 
>>>> length (It's always also 30 82 AB CD...).
>>>> 
>>>> Thanks,
>>>> Max
>>>> 
>>>>> 
>>>>> --Sean
>>>>> 
>>>>>> --Max
>>>>>>> On Aug 14, 2019, at 9:31 PM, Sean Mullan <sean.mul...@oracle.com> wrote:
>>>>>>> 
>>>>>>> On 8/13/19 10:19 PM, Weijun Wang wrote:
>>>>>>>>> I will also pass a pretty large cacerts with public CA and our CAs and
>>>>>>>>> see wether your parser doesn't choke on it.
>>>>>>>> PEM is certainly slower than JKS because of text reading and 
>>>>>>>> de-Base64. I'll see if I can make any enhancement.
>>>>>>> 
>>>>>>> This is a bit of a concern for me. In the past, reading cacerts has 
>>>>>>> been a bit of a bottleneck and we have made some improvements over the 
>>>>>>> years such as: https://bugs.openjdk.java.net/browse/JDK-8129988
>>>>>>> 
>>>>>>> I would not want to see a regression in performance.
>>>>>>> 
>>>>>>> --Sean
>>>> 
> 

Reply via email to