异步情况的日志打印

复制代码
/*************************************
 * 异步情况的日志打印
 * 以记录“加”、“减”的开始、结束时间戳为例,只展示思路,不用纠结方法内容。
**************************************/
#include <iostream>
#include <Windows.h>

#define ADD 1
#define SUB 2

int logNum=0;       //数组的下标,最多记录1000条日志
int action[1000];    //记录点:加、减
long long timeBegin[1000];
long long timeEnd[1000];
void OnLog();       //每5min打印一次

//初始化流程统计数组
memset(action, -1, 1000 * sizeof(int));
memset(timeBegin, -1, 1000 * sizeof(long long));
memset(timeEnd, -1, 1000 * sizeof(long long));

void add()
{
    if (logNum<999) //防止下标越界
    {
        logNum++;
    } 

    action[logNum]=ADD;

    LARGE_INTEGER freq, begin, end;
    QueryPerformanceFrequency(&freq);
    QueryPerformanceCounter(&begin);
    timeBegin[logNum]=begin.QuadPart;
    std::this_thread::sleep_for(std::chrono::seconds(2));   //模拟耗时操作
    QueryPerformanceCounter(&end);
    timeEnd[logNum]=end.QuadPart;
   
}
void sub()
{
    if (logNum<999) //防止下标越界
    {
        logNum++;
    } 

    action[logNum]=SUB;

    LARGE_INTEGER freq, begin, end;
    QueryPerformanceFrequency(&freq);
    QueryPerformanceCounter(&begin);
    timeBegin[logNum]=begin.QuadPart;
    std::this_thread::sleep_for(std::chrono::seconds(2));   //模拟耗时操作
    QueryPerformanceCounter(&end);
    timeEnd[logNum]=end.QuadPart;
}
void OnLog()
{
    char cName[128];
    for (int i = 0; i <logNum; i++)
    {
        switch (action[i])
        {
        case ADD:
            sprintf_s(cName, "加法:开始时间戳 %lld,结束时间戳 %lld", timeBegin[i],timeEnd[i]);
            break;
        case SUB:
            sprintf_s(cName, "减法:开始时间戳 %lld,结束时间戳 %lld", timeBegin[i],timeEnd[i]);
            break;
        default:
            break;
        }
    }
    logNum = 0;
}
复制代码

 

posted @   夕西行  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-05-07 libtorch配置vs2017
点击右上角即可分享
微信分享提示