我正在Intel Core-2 2Duo平台上对Microsoft VS 2005中的一个C代码进行评测。我测量函数所用的时间(秒:毫秒)。但我对这种测量的准确性有一些怀疑,因为操作系统不会持续运行我的应用程序,而是在我的代码执行之间调度其他应用程序/服务。(虽然我在运行配置文件时没有运行主要的应用程序,但windows仍然会有很多自己的代码,它们将通过抢占我的应用程序来运行。)正因为如此,我认为分析数字(我的应用程序运行所用的时间)是不准确的。
所以我的问题是,有没有办法找出典型的windows系统(我运行的是Windows XP)的操作系统开销和调度开销,例如,如果我的应用程序说它运行了60毫秒,在这60毫秒中,我的应用程序到底使用了多少时间。由于被操作系统安排的其他任务抢占,它有多长时间处于空闲状态?
或
至少,根据你在做类似事情时遇到的经验,有没有一个大概的数字来获得这样的操作系统开销?
发布于 2008-09-09 13:41:50
@Kogus:即使我在调试器外部运行(独立的应用程序。从命令提示符),它仍然可能被操作系统抢占,并导致错误地测量我的应用程序所消耗的时间。
不是吗?
-AD
发布于 2008-09-09 13:50:39
我认为你在粒度上会有一些问题。请参阅类似的问题GetLocalTime() API time resolution和Is gettimeofday() guaranteed to be of microsecond resolution?
此外,您可能希望查看包含timeit.exe (类似于unix/linux上的time )的Windows Resource Kits Tools,以提供运行时间和处理时间。
发布于 2008-09-09 13:33:49
建议
尝试在多CPU系统上运行。
https://stackoverflow.com/questions/51887
复制相似问题