JDK-8140384: TicksToTimeHelper::milliseconds() should return a double

Bengt Rutisson bengt.rutisson at oracle.com
Fri Oct 23 11:13:23 UTC 2015


Hi David,

Thanks for looking at this!

On 2015-10-23 12:53, David Holmes wrote:
> On 23/10/2015 6:41 PM, Markus Gronlund wrote:
>> Hi Bengt,
>>
>> Looks good - thanks for fixing.
>
> Arguably if you asked for milliseconds you really didn't care about 
> the fractional part. If you did care then you could just multiply 
> seconds by 1000. But on that basis we could just drop the milliseconds 
> altogether.

I see your point. However, I need the conversion for logging and I would 
like to log with a few decimals. For example "11.34ms". And I think it 
just looks silly in the code to have "* 1000" everywhere. It looks nicer 
to convert to millis directly.

>
>> One small thing:
>>
>> I think we can drop the return (double) cast on line 55, no need for 
>> updated webrevs.
>
> We can drop a most of the double casts This:
>
> static double time_conversion(const Tickspan& span,
>                               TicksToTimeHelper::Unit unit) {
>    double frequency_per_unit = (double)os::elapsed_frequency() / 
> (double)unit;
>
>    return (double) ((double)span.value() / frequency_per_unit);
> }
>
> can become just:
>
>  static double time_conversion(const Tickspan& span,
>                                TicksToTimeHelper::Unit unit) {
>    double frequency_per_unit = os::elapsed_frequency() / (double)unit;
>
>    return span.value() / frequency_per_unit;
> }
>
> promotion rules will ensure each expression is of type double.

Agreed. I will fix this before I push.

Thanks for the review!

Bengt

>
> Cheers,
> David
>
>> Thanks
>> Markus
>>
>> -----Original Message-----
>> From: Bengt Rutisson
>> Sent: den 23 oktober 2015 10:27
>> To: serviceability-dev at openjdk.java.net 
>> serviceability-dev at openjdk.java.net
>> Subject: JDK-8140384: TicksToTimeHelper::milliseconds() should return 
>> a double
>>
>>
>> Hi all,
>>
>> Could I have  a couple of reviews for this small change?
>>
>> http://cr.openjdk.java.net/~brutisso/8140384/webrev.00/
>> https://bugs.openjdk.java.net/browse/JDK-8140384
>>
>> The TicksToTimeHelper class use different return values depending on 
>> if you want to convert to seconds or milliseconds.
>>
>> class TicksToTimeHelper : public AllStatic {
>>    public:
>>     enum Unit {
>>       SECONDS = 1,
>>       MILLISECONDS = 1000
>>     };
>>     static double seconds(const Tickspan& span);
>>     static jlong milliseconds(const Tickspan& span); };
>>
>> No one is using the conversion to milliseconds() but because it 
>> returns a jlong it loses precision.
>>
>> Making milliseconds() return a double allows for coming uses to get 
>> millisecond values with higher precision.
>>
>> Thanks,
>> Bengt
>>



More information about the serviceability-dev mailing list