Can I get the time "Duration" in "nsecs" acurracy?
Steven Schveighoffer
schveiguy at gmail.com
Sun Jul 11 13:40:19 UTC 2021
On 7/9/21 5:13 PM, rempas wrote:
> On Friday, 9 July 2021 at 20:54:21 UTC, Paul Backus wrote:
>> On Friday, 9 July 2021 at 20:43:48 UTC, rempas wrote:
>>> I'm reading the library reference for
>>> [core.time](https://dlang.org/phobos/core_time.html#Duration) and It
>>> says that the duration is taken in "hnsecs" and I cannot understand
>>> if we can change that and choose the precision. Does anyone know if
>>> we can do that?
>>
>> It is stored internally in "hnsecs", but you can convert it to other
>> units using the `total` method [1]; for example,
>> `myDuration.total!"nsecs"`.
>>
>> [1] https://dlang.org/phobos/core_time.html#.Duration.total
>
> It doesn't work for me. I have the following code:
>
> ```
> MonoTime start = MonoTime.currTime();
> // Doing stuff
> MonoTime end = MonoTime.currTime();
> Duration dur = end - start;
> dur = dur.total!"nsecs";
> ```
>
> and I get the following error message:
>
> "Error: cannot implicitly convert expression \`dur.total()\` of type
> \`long\` to \`Duration`"
BTW `Duration` is truncating here. `MonoTime` stores its values in
implementation-defined ticks, which can be nanoseconds or any other
thing that the specific clock uses. Whereas `Duration` uses strictly hnsecs.
If you want to get sub-hnsec resolution, use the `ticks` member of
`MonoTime` and `ticksPerSecond` and do the math for the units.
See the warning
[here](https://dlang.org/phobos/core_time.html#.MonoTimeImpl.opBinary).
-Steve
More information about the Digitalmars-d-learn
mailing list