今天在做实验,测试各种压缩算法的性能时,遇到zstd算法在执行时不会自动输出压缩时间的问题,所以就想法子在cpp程序中给它执行再计时;
C++程序如何执行cmd命令直接上答案:system(要执行的命令);
即可
比如,我这里要打开百度网页,可以直接在cpp中这么写,它就相当于在cmd中执行start www.baidu.com
#include <iostream>
using namespace std;
int main()
{
system("start www.baidu.com");
return 0;
}
如何一行执行多条cmd命令
在cmd中一行执行多条命令,往往这么些cmd1 & cmd2 & cmd3 & ......
比如,我要进入E盘,再打开百度网页,就可以E: & start www.baicu.com
所以,在cpp程序的system
语句中这么写肯定也没问题;system("E: & start www.baidu.com");
cpp计时功能有挺多实现方式,我常常用这个,需要头文件time.h
clock_t start, end;
start = clock();
xxxxxx
end = clock();
这么下来我整个需求就可以用这个cpp文件完成了,代码如下:
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
clock_t start, end;
start = clock();
// system("E: & cd E:\\Desktop\\experiment & zstd -22 reymont -o reyzstd"); //使用zstd文件压缩
system("E: & cd E:\\Desktop\\experiment & zstd -d reyzstd -o reymontzstd"); //使用zstd文件解压
end = clock();
cout << "\ntime = "<< ((double)end - start) / CLK_TCK;
return 0;
}
可以看到,cnd窗口执行命令后的输出会直接在vscode的终端输出这里显示,然后输出我们要的执行时间;
当然,这个时间可能略微有一丢丢延迟,因为有启动cmd到运行zstd程序的时间,基本可以忽略吧,因为0.036它本身的解压时间已经够短了;