首页 > 编程语言 ># C++ 简单的程序段记时工具

# C++ 简单的程序段记时工具

时间:2022-09-01 11:23:55浏览次数:57  
标签:name clock C++ cost 工具 tic 程序段 _## define

基于宏定义的几个C++记时工具,实现类似于MATLAB中tic().toc()的功能

代码

#include <ctime>

#define def_tic(name) clock_t t_##name
#define rec_tic(name) t_##name = clock()
#define cost_time(name) double(clock()-(t_##name))/CLOCKS_PER_SEC

#define tic(name) def_tic(name); rec_tic(name)
#define toc(name) std::cout<<"[ "<<#name<<" ]"<<" cost "<<cost_time(name)<<" s"<<std::endl

测试

#include<bits/stdc++.h>

#define def_tic(name) clock_t t_##name
#define rec_tic(name) t_##name = clock()
#define cost_time(name) double(clock()-(t_##name))/CLOCKS_PER_SEC

#define tic(name) def_tic(name); rec_tic(name)
#define toc(name) std::cout<<"[ "<<#name<<" ]"<<" cost "<<cost_time(name)<<" s"<<std::endl

using namespace std;

int main(){
    int N=1e8;
    vector<int> vec;
    tic(Using_Push_Back);
    for(int i=0;i<N;i++)
        vec.push_back(i);
    toc(Using_Push_Back);

    vector<int> vec2;
    vec2.reserve(N);
    tic(Using_Emplace_Back);
    for(int i=0;i<N;i++)
        vec2.emplace_back(i);
    toc(Using_Emplace_Back);
    return 0;
}

输出

[ Using_Push_Back ] cost 0.224 s
[ Using_Emplace_Back ] cost 0.121 s

使用预先reserve分配内存,emplace_back()可以提高vector容器使用效率。

标签:name,clock,C++,cost,工具,tic,程序段,_##,define
From: https://www.cnblogs.com/chetwin/p/16645875.html

相关文章

  • c++的类型转换
    1.int转string,函数to_string()x=10;stringm=to_string(x);经测试gccv5.4.0版本不支持,版本v7.5.0支持。判断版本号命令:g++-v同样适用于double,float2.string转int,......
  • mysql一键安装工具
    下载地址 https://www.lanzouj.com/i6mk62bhttps://www.52pojie.cn/thread-1034266-1-1.html  1.若想开机自动启动MySQL,在[设置]菜单勾上[服务模式]即可。2......
  • 5 个加速 React 开发的工具
    5个加速React开发的工具React工具、技巧和最佳实践将帮助您更快地构建应用程序Original照片by凯利@PexelsReact没有为样式、数据获取、路由或动画规定惯用的......
  • 各种开源数据库同步工具汇总
    (1)OGGOracleGoldenGate是一款实时访问、基于日志变化捕捉数据,并且在异构平台之间迚行数据传输的产品。GoldenGateTDM是一种基于软件的数据复制方式,它从数据库的日......
  • 主机网络限速+测速工具
    wondershaper是基于tc包装的一个很不错的网络限速工具,speedtest-cli是一个网络测速工具speedtest是基于浏览器的测速工具,同时也包含了不少语言的扩展,都是比较值得使用......
  • 推荐一款国产网络管理工具-FinalShell
    FinalShell是一款免费的国产的集SSH工具、服务器管理、远程桌面加速的良心软件,同时支持Windows,macOS,Linux,它不单单是一个SSH工具,完整的说法应该叫一体化的的服务器,网络管......
  • C++ 地形导航系统之确定峰点的位置
    #include<iostream>#include<string>#include<fstream>#defineN64boolisPeak(intgrid[][N],intr,intc);intmain(){intnrows,ncols;intm......
  • 盘点当下最流行的 Java 工具
    最流行的工具并不一定是“最好的”,对于开发来说,什么是最好的,取决于使用场景。然而,当选择工具时,流行程度是不可忽视的一个重要因素,并不是因为工具的流行增加了其价值,而......
  • c++基础思维导图2
    c++基础思维导图2结构体结构体的基本概念:用户自定义的数据类型结构体定义和使用struct结构体名{结构体成员}struct结构体名变量名;struct结构体名变量名={成......
  • 【C++】引用与指针的区别
    安全性首先引用要比指针要安全,因为引用不能更改绑定,但是指针可以更改指向,此外指针可以有多级,但是引用一般只有一级。在使用指针的时候,我们往往需要使用断言,判断指针是不是......