gpt4 book ai didi

c++ - 如何在 Windows 上使用 C++ 测量 CPU 时间并包括 system() 的调用?

转载 作者:可可西里 更新时间:2023-11-01 13:15:07 25 4
gpt4 key购买 nike

我想在 C++ 算法上运行一些基准测试,并希望根据输入获得它所需的 CPU 时间。我在 Windows 7 上使用 Visual Studio 2012。我已经发现了一种在 Windows 中计算 CPU 时间的方法:How can I measure CPU time and wall clock time on both Linux/Windows?

但是,我使用 system()我的算法中的命令,不是那样测量的。那么,如何测量 CPU 时间并包括通过 system() 调用脚本的时间?

我应该添加一个小例子。这是我的 get_cpu_time 函数(来自上述链接):

double get_cpu_time(){
FILETIME a,b,c,d;
if (GetProcessTimes(GetCurrentProcess(),&a,&b,&c,&d) != 0){
// Returns total user time.
// Can be tweaked to include kernel times as well.
return
(double)(d.dwLowDateTime |
((unsigned long long)d.dwHighDateTime << 32)) * 0.0000001;
}else{
// Handle error
return 0;
}
}

到目前为止一切正常,当我制作一个程序时,对一些数组进行排序(或做一些其他需要一些时间的事情),它工作正常。但是,当我在这种情况下使用 system()-command 时,它不会:

int main( int argc, const char* argv[] )
{
double start = get_cpu_time();
double end;
system("Bla.exe");
end = get_cpu_time();

printf("Everything took %f seconds of CPU time", end - start);

std::cin.get();

}

给定 exe 文件的执行以相同的方式测量,大约需要 5 秒。当我通过 system() 运行它时,整个过程需要 0 秒的 CPU 时间,这显然不包括 exe 文件的执行。

一种可能性是在系统调用中获取 HANDLE,这是否可能?

最佳答案

Linux:

关于c++ - 如何在 Windows 上使用 C++ 测量 CPU 时间并包括 system() 的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19976901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com