c纳秒级计时器_纳秒级性能计时器

using System;

using System.ComponentModel;

using System.Runtime.InteropServices;

using System.Threading;

namespace Masuit.Tools.Systems

{

// 纳秒级计时器

///

public class HiPerfTimer

{

[DllImport("Kernel32.dll")]

private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);

[DllImport("Kernel32.dll")]

private static extern bool QueryPerformanceFrequency(out long lpFrequency);

private long _startTime;

private long _stopTime;

private readonly long _freq;

///

/// 纳秒计数器

///

public HiPerfTimer()

{

_startTime = 0;

_stopTime = 0;

if (QueryPerformanceFrequency(out _freq) == false)

{

// 不支持高性能计数器

throw new Win32Exception();

}

}

///

/// 开始计时器

///

public void Start()

{

// 来让等待线程工作

Thread.Sleep(0);

QueryPerformanceCounter(out _startTime);

}

///

/// 启动一个新的计时器

///

///

public static HiPerfTimer StartNew()

{

HiPerfTimer timer = new HiPerfTimer();

timer.Start();

return timer;

}

///

/// 停止计时器

///

public void Stop()

{

QueryPerformanceCounter(out _stopTime);

}

///

/// 时器经过时间(单位:秒)

///

public double Duration => (_stopTime - _startTime) / (double)_freq;

///

/// 执行一个方法并测试执行时间

///

///

///

public static double Execute(Action action)

{

var timer = new HiPerfTimer();

timer.Start();

action();

timer.Stop();

return timer.Duration;

}

}

}

//调用

private void button2_Click(object sender, EventArgs e)

{

HiPerfTimer timer = HiPerfTimer.StartNew();//执行一个待办事项并测试执行时间

//待办事项

timer.Stop();

label1.Text="执行耗时" + timer.Duration + "s";// 返回测试时间

double time = HiPerfTimer.Execute(() =>//执行一个方法并测试执行时间

{

//方法

});

label1.Text="执行耗时" + time + "s";//返回测试时间

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值