On Mon, 15 Jul 2024 09:36:28 GMT, Fernando Guallini <fguall...@openjdk.org> 
wrote:

>> test/jdk/com/sun/crypto/provider/Cipher/DES/PerformanceTest.java line 186:
>> 
>>> 184:         end = System.currentTimeMillis();
>>> 185: 
>>> 186:         // To avoid diving by zero if end is equal to start
>> 
>> Test is performing 100 and 1000 rounds of `update`. I don't think we are 
>> seeing same start and end. Please test further to determine root cause. 
>> Could be the case of overflow if `update` is taking long time.
>
> The root cause is that start and end are equal, leading to the exception 
> ArithmeticException: / by zero. These rounds can execute very quickly; on a 
> macOS platform, they can take as little as 1 millisecond.
> 
> This issue is easily reproducible on platforms where 
> System.currentTimeMillis() has low precision, such as many versions of 
> Windows, end and start can be equal when obtaining System.currentTimeMillis() 
> if the rounds run very quickly. (just updated the PR description including 
> this information)

We can use System.nanoTime() instead, which is designed to measure elapsed time 
with very high precision. This overcomes the issue on platforms with low 
granularity, and we should no longer see end - start = 0.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20135#discussion_r1681237982

Reply via email to