c++微秒级计时+对拍

Posted 123789456ye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++微秒级计时+对拍相关的知识,希望对你有一定的参考价值。

调用了c++11加入的chrono库和命名空间
直接贴代码
大部分内容来自这篇##blog##

注意:如果你直接这么写你会发现用纳秒级的代码实际上的精度是0.1微秒

这是因为在Windows下system_clock只有这个精度

所以如果想做到真正的1ns需要用high_resolution_clock

当然你用linux的话请无视上面那几句话

好难背啊

#include<cstdio>
#include<chrono>
#include<cstdlib>//用万能头也行
using namespace std;
using namespace chrono;
int main()

    register int i=1;
    for(;;++i)
    
        system("data.exe > in.txt");
        auto s=system_clock::now();
        system("std.exe < in.txt  > stdout.txt");
        auto t=system_clock::now();
        system("test.exe < in.txt > testout.txt");
        auto t2=system_clock::now();
        auto duration1=duration_cast<microseconds>(t-s);
        auto duration2=duration_cast<microseconds>(t2-t);
        double time1=(double)(duration1.count())/1000;
        double time2=(double)(duration2.count())/1000;
        if(system("fc /W stdout.txt testout.txt > nul"))
        
            printf("point #%d\nWA time used: std %.3fms test %.3lfms\n",i,time1,time2);
            break;
        
        else printf("point #%d\nAC time used: std %.3fms test %.3lfms\n",i,time1,time2);
    
    system("pause>nul");
    return 0;

以上是关于c++微秒级计时+对拍的主要内容,如果未能解决你的问题,请参考以下文章

一个带微秒计时器的时钟

Linux之C++毫秒级计时方法

stm32 微秒定延时问题

C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出

使用 C++ 以纳秒为单位提供时间的计时器功能

纳秒级性能计时器