using System.Diagnostics;
namespace XFEExtension.NetCore.XUnit.Benchmarking;
///
/// 使用 的单调高精度计数器实现基准时钟。
///
public sealed class StopwatchBenchmarkClock : IBenchmarkClock
{
///
/// 获取当前平台上 每秒的计数频率。
///
public long Frequency => Stopwatch.Frequency;
///
/// 获取 的当前时间戳。
///
/// 当前高精度计数器值。
public long GetTimestamp() => Stopwatch.GetTimestamp();
///
/// 根据平台计数频率将时间戳差值转换为纳秒。
///
/// 测量开始时的计数器值。
/// 测量结束时的计数器值。
/// 换算后的经过纳秒数。
public double GetElapsedNanoseconds(long startTimestamp, long endTimestamp) =>
(endTimestamp - startTimestamp) * (1_000_000_000d / Stopwatch.Frequency);
}