wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows上以C计算CPU时间大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在C中有什么方法可以计算在CPU时间内运行给定程序或例程需要多长时间? 我使用在Windows 7上运行的Visual studio 2008. 如果你想知道一个进程使用的CPU总时间,那么clock和rdtsc(直接或通过编译器内在)都不是最好的选择,至少是IMO.如果您需要可移植的代码,那么您可以做的最好是使用时钟,尽可能将系统测试为静态,并希望最好(但如果您这样做,请注意时钟的分辨率是CLO
在C中有什么方法可以计算在cpu时间内运行给定程序或例程需要多长时间?

我使用在Windows 7上运行的Visual studio 2008.

如果你想知道一个进程使用的cpu总时间,那么clock和rdtsc(直接或通过编译器内在)都不是最好的选择,至少是IMO.如果您需要可移植的代码,那么您可以做的最好是使用时钟,尽可能将系统测试为静态,并希望最好(但如果您这样做,请注意时钟的分辨率是CLOCKS_PER_SEC,可能是也可能不是1000,即使它是,你的实际定时分辨率往往不会那么好 – 它可能给你几毫秒的时间,但至少通常一次提前几十毫秒).

但是,由于您似乎不介意特定于Windows的代码,因此您可以做得更好.至少如果我对你正在寻找的东西的理解是正确的,你真正想要的可能是GetProcessTimes,它将(单独)告诉你进程的内核模式和用户模式cpu使用(以及开始时间)和退出时间,如果你愿意,你可以从中计算所用的时间).还有QueryProcessCycleTime,它将告诉您进程使用的cpu时钟周期总数(所有线程中用户和内核模式的总和).就个人而言,我很难想象后者有多大用处 – 计算个别时钟周期对于需要进行密集优化的小部分代码非常有用,但我不太确定如何将它应用于完整的过程. GetProcessTimes使用FILETIME结构,它支持100纳秒的分辨率,但实际上大多数时候你会看到调度程序的时间片的倍数(随着窗口的版本而变化,但是在毫秒到几十毫秒的数量级) .

在任何情况下,如果你真的想要从开始到结束的时间,GetProcessTimes将允许你这样做 – 如果你产生程序(例如,使用CreateProcess),你将获得一个过程的句柄,当孩子将发出信号进程退出.然后,您可以在该句柄上调用GetProcessTimes,并检索时间,即使子项已经退出 – 只要该进程的至少一个句柄保持打开,句柄将保持有效.

大佬总结

以上是大佬教程为你收集整理的在Windows上以C计算CPU时间全部内容,希望文章能够帮你解决在Windows上以C计算CPU时间所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。