记录一下c/c++的几种计时方式

2023-05-16

#include <iostream>
#include <string>
#include <chrono>


void Run(){
    for(int i=0; i<10000000; i++){

    }
}

void timeConsumed1(){
    clock_t startTime = clock();
    Run();
    clock_t endTime = clock();
    double spendSecond = (double)(endTime-startTime)/CLOCKS_PER_SEC;
    std::cout<<"spend time : "<<std::endl
    <<spendSecond<<" s"<<std::endl;}

void timeConsumed2(){
    std::chrono::high_resolution_clock::time_point startTime = std::chrono::high_resolution_clock::now();
    Run();
    std::chrono::high_resolution_clock::time_point endTime = std::chrono::high_resolution_clock::now();

    //秒
    double duration_second = std::chrono::duration<double>(endTime - startTime).count();
    std::cout << duration_second << " s" << std::endl;
}

void timeConsumedInMilli(){
    auto startTime = std::chrono::steady_clock::now();
    Run();
    auto endTime = std::chrono::steady_clock::now();

    //毫秒级
    auto duration_second = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime);
    std::cout<< duration_second.count() << " ms" << std::endl;
}

void timeConsumedInMicro(){
    auto startTime = std::chrono::steady_clock::now();
    Run();
    auto endTime = std::chrono::steady_clock::now();

    //微秒级
    double duration_second = std::chrono::duration<double, std::micro>(endTime - startTime).count();
    std::cout<< duration_second << " us" << std::endl;
}

void timeConsumedInNano(){
    auto startTime = std::chrono::steady_clock::now();
    Run();
    auto endTime = std::chrono::steady_clock::now();

    //纳秒级
    auto duration_second = std::chrono::duration_cast<std::chrono::nanoseconds>(endTime - startTime);
    std::cout<< duration_second.count() << " ns" << std::endl;}

int main(int argc, char** argv){
    timeConsumed1();
    timeConsumed2();
    timeConsumedInMilli();
    timeConsumedInMicro();
    timeConsumedInNano();

    return 0;
}
struct timespec ts_begin, ts_end;

clock_gettime(CLOCK_REALTIME, &ts_begin);
// timespec_get(&ts_begin, TIME_UTC);
std::chrono::high_resolution_clock::time_point beginTime = std::chrono::high_resolution_clock::now();
clock_t start = clock();

/** 引擎进行推理 **/
infer->forward();

clock_t end = clock();
std::chrono::high_resolution_clock::time_point endTime = std::chrono::high_resolution_clock::now();
clock_gettime(CLOCK_REALTIME, &ts_end);
// timespec_get(&ts_end, TIME_UTC);

double spend_time = (double)(end - start)/CLOCKS_PER_SEC*1000;
std::cout << "############## Total inference time 1 is " << spend_time << "ms" << std::endl;

std::chrono::milliseconds timeInterval = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - beginTime);
std::cout << "############## Total inference time 2 is " << timeInterval.count() << "ms" << std::endl;

double spend3 = (double)(ts_end.tv_nsec - ts_begin.tv_nsec)/1e6;
std::cout << "############## Total inference time 3 is " << spend3 << "ms" << std::endl;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录一下c/c++的几种计时方式 的相关文章

  • Linux内核之自旋锁和信号量

    Linux内核实现了多种同步方法 xff0c 指令级支持的原子操作 自旋锁 信号量 互斥锁 完成量 大内核锁等等 xff0c 我就挑比较有代表性的两个锁 自旋锁和信号量来分析 自旋锁 Linux内核中最常用的锁就是自旋锁 spin lock
  • NXP S32K146 FREERTOS工程配置UART底层驱动(一)

    MCU平台还是S32K146 xff0c 开发环境是S32DS 用官方的SDK3 0 0 xff0c PE配置外设 xff0c 生成generation code 在SDK上边封装函数 xff0c 第三库用的ringbuf循环队列 xff0
  • Linux系列 | Linux 离线安装配置MySQL5.7.25教程(附mysql命令大全)

    Linux 离线安装配置MySQL5 7 25教程 1 安装环境2 前置工作2 1 卸载系统自带的mariadb2 2 卸载旧版本mysql xff08 可跳过 xff09 2 3 删除etc目录下的my cnf文件 xff08 没有可跳过
  • 创建Vue项目报HADOOP_CONF_DIR错解决方法

    创建Vue项目报错解决方法 创建Vue ui项目时终端报错 xff1a ERROR Failed to get response from No HADOOP CONF DIR set Please specify it either sp
  • android调试常见问题(持续更新)

    1 jni调用时出现以下错误 failed dlopen failed cannot locate symbol rand referenced by xxx 通常是ndk编译的平台太低导致 打开jni的Application mk 修改里
  • 大数据系列 | 解决Hadoop不能打开端口8088的网页问题(50070可以打开)

    解决Hadoop不能打开端口8088的网页问题 50070可以打开 原因 xff1a 本地hosts文件没有添加集群ip集群环境没有开放8088端口hadoop的配置文件yarn site xml问题 解决方法 xff1a 首先检查一下使用
  • Vue2前端请求API数据跨域问题解决

    Vue2前端请求API数据跨域问题解决方法 前端 xff1a Vue2 接口使用 xff1a API 问题报错提示 xff1a Access to XMLHttpRequest at span class token string 39 h
  • vmware虚拟机ubuntu18.04桌面版安装教程

    vmware虚拟机ubuntu18 04桌面版安装教程 一 安装环境 xff1a VMware Workstation xff1a 15 5Pro Ubuntu xff1a 18 04桌面版 二 安装教程 xff1a 创建虚拟机 选择 自定
  • Python系列 | Turtle绘图学习之羽毛球随机点训练场

    绘图之前先要安装turtle模块 xff1a python 2 xff1a pip install turtle python 3 pip3 install turtle 绘图思路 xff1a 首先绘制出外正方形和内线 xff0c 然后使用
  • 大数据系列 | 全国职业院校技能大赛大数据应用技术赛项笔记分享-离线抽取模块

    离线数据抽取 写在前面 xff1a 此笔记是本人在备战2022年大数据赛项整理出来的 xff0c 不涉及国赛涉密内容 xff0c 如点赞收藏理想 xff0c 我将会把所有模块的笔记开源分享出来 xff0c 如有想询问国赛经验的可以关注私聊我
  • C语言系列 | 简单题练习

    第一题 xff1a 简易计算器 思路 xff1a 定义变量后使用while无限循环执行 xff0c 使用switch语句实现多分支选择 源代码 xff1a span class token macro property span class
  • Python系列 | 基于Requests和PyEcharts实现爬取博客数据可视化大屏分析

    博客数据分析大屏可视化实现的效果 xff1a 一 核心功能设计 学习笔记分享 xff1a 博客作者数据分析实现的思路大致为爬虫 用户通过控制台输入用户博客地址和博客文章地址 和大屏可视化展示两方面 接下来我们可以通过以下几步实现需求 xff
  • C++ 引用 乱七八糟的总结

    1 什么是 引用 xff1f 申明和使用 引用 要注意哪些问题 xff1f 引用就是某个目标变量的 别名 alias xff0c 对应用的操作与对变量直接操作效果完全相同 申明一个引用的时候 xff0c 切记要对其进行初始化 引用声明完毕后
  • 麻将胡牌算法(查表法 和 拆解法)

    1 查表法计算麻将胡牌 原理 http hp vector co jp authors VA046927 mjscore mjalgorism html 2 跟拆解法对比进行效率比较 package main import 34 fmt 3
  • FreeRTOS第一步:创建多任务

    目录 单片机裸机开发与基于操作系统开发 FreeRTOS介绍 创建多任务 SRAM 动态内存 一 动态内存空间的堆从哪里来 xff1a 二 定义任务函数 xff1a 三 定义任务栈 xff1a 四 定义任务控制块指针 xff1a 五 动态创
  • Android studio 使用记录

    一 常用技巧 1 代码格式化 Code gt Reformat Code 2 自动删除多余的import Code gt Optimize imports 3 从工程中查找某个字符串 Edit gt Find gt Find in path
  • 嵌入式C语言基础知识 -- 函数指针&回调函数&结构体指针

    目录 一 函数指针 xff1a 什么是函数指针 xff1f 函数指针的三种定义方式 xff1a xff08 1 xff09 先定义出函数的类型 xff0c 再通过类型定义函数指针变量 xff08 2 xff09 先定义出函数指针的类型 xf
  • 常见的SSL证书错误代码及解决方法

    有时候SSL证书明明安装了 xff0c 但是为什么不出现绿色小锁呢 xff1f 浏览器总是报错 xff0c SSL证书明明已经安装好了 xff0c 怎么突然访问不显示绿色安全锁呢 xff1f 针对这些问题 xff0c 整理出一些常见的SSL
  • Tomcat 8.5和Tomcat 9安装SSL证书的教程

    第一步 xff1a 准备好所需要的证书文件 xff0c Tomcat8 5和Tomcat9部署ssl证书一般使用JKS文件 xff0c 如果有Pem和key文件 xff0c 也需要合成JKS文件 第二步 xff1a 打开tomcat配置文件
  • 浅谈人工智能(AI)

    人工智能 AI 一 人工智能简介 1 1 人工智能定义和发展历史 人工智能 xff08 Artificial Intelligence xff09 xff0c 英文缩写为AI 它是研究 开发用于模拟 延伸和扩展人的智能的理论 方法 技术及应

随机推荐

  • 睿智的目标检测31——非极大抑制NMS与Soft-NMS

    注意事项 Soft NMS对于大多数数据集而言 xff0c 作用比较小 xff0c 提升效果非常不明显 xff0c 它起作用的地方是大量密集的同类重叠场景 xff0c 大量密集的不同类重叠场景其实也没什么作用 xff0c 同学们可以借助So
  • ubuntu18.04 安装Pangolin

    按照Github上面的教程走即可 xff0c 非常简单 https github com stevenlovegrove Pangolin 首先要安装一些必要的库 Glew xff1a sudo apt get install libgle
  • freertos 学习 资源整理

    1 freertos 官方网站 freertos 官方网站 https www freertos org index html 源码下载 xff1a https sourceforge net projects freertos 2 如何下
  • openwrt: ipq4019 路由 资料汇总

    参考网站 https openwrt org 代码 https github com openwrt openwrt releases tag v18 06 1 wget https github com openwrt openwrt a
  • IT行业ToB销售为什么这么难

    IT行业ToB销售为什么这么难 华东企业服务IT圈 4天前 背景 xff1a 笔者IT行业从业14年 xff0c 干过售后 售前 销售 创过业 xff0c 属于那种基本出去拜访客户不需要售前那种 xff0c 复杂的技术方案自己操刀才放心 x
  • 【Linux编程】守护进程(daemon)详解与创建

    本文主要参考自 xff1a linux系统编程之进程 xff08 八 xff09 xff1a 守护进程详解及创建 xff0c daemon 使用 一 概述 Daemon xff08 守护进程 xff09 是运行在后台的一种特殊进程 它独立于
  • Android studio svn使用方法

    步骤 一 设置忽略文件 可参考工程目录下的 gitignore文件 iml DS Store externalNativeBuild local properties idea libraries idea modules xml idea
  • linux lsusb命令的安装及简单使用

    在 Linux 中我们可以使用 lsusb 来列出 USB 设备和它的属性 xff0c lsusb 会显示驱动和内部连接到你系统的设备 直接在控制台输入 lsusb 即可 安装 如果无法运行 lsusb xff0c 使用以下命令安装 xff
  • 算法总结

    在2020年的时候 xff0c 我第一次接触了C 43 43 编程 xff0c 那时的我是一位四年级的小学生 xff0c 觉得挺好玩的 xff0c 爸爸就给我推荐了一门课程 程序设计与算法 xff08 一 xff09 C语言程序设计 xff
  • ubuntu16.04安装docker

    ubuntu16 04安装docker 开始安装 开始安装 由于apt官方库里的docker版本可能比较旧 xff0c 所以先卸载可能存在的旧版本 xff1a span class token function sudo span span
  • docker命令中的/bin/bash

    docker run i t tomcat bin bash 中的 bin bash的作用是因为docker后台必须运行一个进程 xff0c 否则容器就会退出 xff0c 在这里表示启动容器后启动bash
  • 如何将文件从本机上传到docker容器

    1 如何从docker容器中下载文件 xff1a docker span class token function cp span container created path span class token operator lt sp
  • libjpeg.so.8: cannot open shared object file: No such file or directory.

    在docker容器里执行carla的PythonAPI报错 xff1a libjpeg so 8 cannot span class token function open span shared object file No such s
  • Docker容器图形界面显示的配置方法

    参考博客 0 环境说明 Ubuntu 16 04 docker 19 03 12 因为要在docker中用pygame xff0c 要用到显示器 xff0c 这个时候需要解决这个Docker 可视化 的问题 原理简介 原理上可以把docke
  • 在docker中运行carla

    参考carla文档 ubuntu18 04 carla0 9 9 docker19 03 12 Docker Installation Docker CE For our tests we used the Docker CE versio
  • Pyglet设置窗口标题

    Pyglet教程 Caption The window s caption appears in its title bar and task bar icon on Windows and some Linux window manage
  • Linux 解决远程连接的 “Gtk-WARNING **: cannot open display;”

    转发 ssh Y username 64 ip 使用 Y 参数实际上是授权了 X11 转发 xff0c 这样就可以看到来自远端的 gtk 图形窗口了 span class token function man span span class
  • android jni调试 - 堆栈分析

    一 环境 xff1a windows rk3399 android 7 1 二 奔溃信息 pid 13544 tid 13639 name no localmeeting gt gt gt com sino localmeeting lt
  • CFileDialog的使用[转]

    由于项目需要 xff0c 查阅了一下CFileDialog类 xff0c 以满足程序自动读取配置文件的需求 xff0c 现在小小记录一下 xff01 CFileDialog类封装了Windows常用的文件对话框 xff0c 提供个一种简单的
  • 记录一下c/c++的几种计时方式

    include lt iostream gt include lt string gt include lt chrono gt void Run for int i 61 0 i lt 10000000 i 43 43 void time