Skip to content

Commit 239d9d6

Browse files
SingleCopyAndyRuddUKgladjohnneha-bhargava
authored
MeasureDurationResult incorrect when running in linux (#4785)
Use the Stopwatch.Frequency when calculating the milli and micro seconds Co-authored-by: Andy Rudd <[email protected]> Co-authored-by: Gladwin Johnson <[email protected]> Co-authored-by: Neha Bhargava <[email protected]>
1 parent fa99d05 commit 239d9d6

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/client/Microsoft.Identity.Client/Utils/MeasureDurationResult.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
// Licensed under the MIT License.
33

44
using System;
5-
using System.Collections.Generic;
6-
using System.Linq;
7-
using System.Text;
5+
using System.Diagnostics;
86
using System.Threading.Tasks;
97

108
namespace Microsoft.Identity.Client.Utils
@@ -14,11 +12,14 @@ namespace Microsoft.Identity.Client.Utils
1412
/// </summary>
1513
internal struct MeasureDurationResult<TResult>
1614
{
15+
private const int TicksPerMicrosecond = 10;
16+
private static readonly double s_tickFrequency = TimeSpan.TicksPerSecond / (double)Stopwatch.Frequency;
17+
1718
public MeasureDurationResult(TResult result, long ticks)
1819
{
1920
Result = result;
20-
Milliseconds = ticks / TimeSpan.TicksPerMillisecond;
21-
Microseconds = ticks / (TimeSpan.TicksPerMillisecond / 1000);
21+
Milliseconds = (long)(ticks / s_tickFrequency / TimeSpan.TicksPerMillisecond);
22+
Microseconds = (long)(ticks * s_tickFrequency / TicksPerMicrosecond % 1000);
2223
Ticks = ticks;
2324
}
2425

@@ -45,10 +46,13 @@ public MeasureDurationResult(TResult result, long ticks)
4546
/// </summary>
4647
internal struct MeasureDurationResult
4748
{
49+
private const int TicksPerMicrosecond = 10;
50+
private static readonly double s_tickFrequency = TimeSpan.TicksPerSecond / (double)Stopwatch.Frequency;
51+
4852
public MeasureDurationResult(long ticks)
4953
{
50-
Milliseconds = ticks / TimeSpan.TicksPerMillisecond;
51-
Microseconds = ticks / (TimeSpan.TicksPerMillisecond / 1000);
54+
Milliseconds = (long)(ticks * s_tickFrequency / TimeSpan.TicksPerMillisecond % 1000);
55+
Microseconds = (long)(ticks * s_tickFrequency / TicksPerMicrosecond % 1000);
5256
Ticks = ticks;
5357
}
5458

0 commit comments

Comments
 (0)