On Wed, 21 Aug 2024 22:27:27 GMT, David Holmes <dhol...@openjdk.org> wrote:

>> I want to provide advice for how this API should be used.
>> 
>> The "recent period of time observed" is vague (Who's the observer? Who 
>> decides the "recent period"? The API user or the JVM?). In essence it is the 
>> time between two consecutive calls, but that is not very clear from the 
>> description -- this has been seen to cause confusion.
>> 
>> I hesitated to add "idempotent", but also I felt that it added something. 
>> Without it, the rest of the sentence is basically just the same words as in 
>> the first paragraph, so they can be easily missed. Also, the best practices 
>> I've seen is that "getters" should be idempotent, so stating this one isn't 
>> signals there's something to take note of here.
>> 
>> Adding `@apiNote` might be enough of signal. Have updated with the tag and 
>> removed "idempotent".
>
>> "Idempotence is the property of certain operations in mathematics and 
>> computer science whereby they can be applied multiple times without changing 
>> the result beyond the initial application. "
> 
> So the notion of idempotency on a getter method just doesn't make sense in 
> general  and in this case in particular as you calculate a new result each 
> time.

Right, I agree. The confusing thing here is that it isn't obvious by the name 
(nor the docs, until now hopefully) that it does calculate a new result each 
time it is called. 

What I think user's want, and mistakes this method for, is something of the 
commandline `top` equivalent. By not being able to define the period of 
observation, or even reliably tell what it is, I think many assumes it's 
something reasonable. To add to this, looking at the Windows implementation you 
have a minimum duration of 500 ticks, so you'll never see the outliers you see 
on Linux where you can get a duration of just 2 ticks, and get return values 
like 1.0, 0.5, or 0.0.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20546#discussion_r1726458611

Reply via email to