Precision timer

void timer()
{
    SetThreadAffinityMask(GetCurrentThread(), 1);  //choose core
    LARGE_INTEGER start, end;            
    LARGE_INTEGER freq;   
    double result;
    //timeConsuming();  
    QueryPerformanceFrequency(&freq);  


    QueryPerformanceCounter(&start);//start  
    running(); //running  
    QueryPerformanceCounter(&end); //end  
    result=(end.QuadPart - start.QuadPart)/(double)freq.QuadPart;


    std::cout<<"start.QuadPart = "<<start.QuadPart<<std::endl;         //output start   
    std::cout<<"end.QuadPart = "<<end.QuadPart<<std::endl;    //output end   
    std::cout<<"consume value = end.QuadPart - start.QuadPart = "<<(end.QuadPart - start.QuadPart)<<std::endl;   
    cout<<"frequency= "<<freq.QuadPart<<"Hz   "<<"("<<(double)freq.QuadPart/1024.0/1024.0<<"GHz)"<<endl;
    std::cout<<"Time consumed:= "<<result<<"(s)"<<std::endl;  //output consumed time 
}


备注:把需要计算的程序代码段放在 runing() 函数中

在VB.NET中,`System.Diagnostics.Stopwatch` 是一个更高精度的定时器,可以用来代替 `Timer` 定时器。 `Stopwatch` 类提供了更准确的计时功能,可以达到更高的精度。 以下是一个示例代码,展示了如何使用 `Stopwatch` 类来实现定时器功能: ```vb Imports System.Diagnostics Public Class HighPrecisionTimer Private stopwatch As Stopwatch Private interval As TimeSpan Private timerElapsed As EventHandler Public Sub New(intervalMilliseconds As Integer) interval = TimeSpan.FromMilliseconds(intervalMilliseconds) stopwatch = New Stopwatch() End Sub Public Sub Start() stopwatch.Start() Do While True If stopwatch.Elapsed >= interval Then stopwatch.Restart() RaiseEvent Elapsed(Me, EventArgs.Empty) End If Loop End Sub Public Sub [Stop]() stopwatch.Stop() End Sub Public Event Elapsed As EventHandler End Class Public Class MainApp Public Shared Sub Main() Dim timer As New HighPrecisionTimer(1000) ' 定义一个间隔为1秒的高精度定时器 AddHandler timer.Elapsed, AddressOf TimerElapsed ' 注册定时器的事件处理程序 timer.Start() ' 这里可以添加其他业务逻辑或等待用户交互 Console.WriteLine("Press Enter to stop the timer...") Console.ReadLine() timer.Stop() End Sub Private Shared Sub TimerElapsed(sender As Object, e As EventArgs) ' 在这里执行定时器触发时的逻辑 Console.WriteLine("High precision timer elapsed!") End Sub End Class ``` 在上述代码中,我们创建了一个名为 `HighPrecisionTimer` 的类,并使用 `Stopwatch` 类来实现高精度的定时器功能。在 `HighPrecisionTimer` 类的构造函数中,我们指定了定时器的间隔时间。 在 `Start` 方法中,我们使用一个无限循环来检查定时器是否已达到指定的间隔时间。当达到间隔时间时,我们重新开始计时,然后触发 `Elapsed` 事件。你可以在 `Elapsed` 事件处理程序中编写定时器触发时的逻辑。 在 `MainApp` 类中,我们实例化了 `HighPrecisionTimer` 对象,并注册了 `TimerElapsed` 方法作为定时器的事件处理程序。然后,通过调用 `Start` 方法来启动定时器。 这样,使用 `Stopwatch` 类实现的定时器可以提供更高的精度和准确性。但需要注意的是,由于是一个无限循环,需要适当控制循环条件以避免无法退出的情况。 希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值