如何计算某个程序在运行时所花费的时间和使用的内存?
我是 C++ 的初学者。对于我的问题,我已经看到了很多答案和不同的代码,但我都不明白。有没有简单的方法可以做到这一点?
如果有更复杂的方法,请包括解释。
谢谢。
如何计算某个程序在运行时所花费的时间和使用的内存?
我是 C++ 的初学者。对于我的问题,我已经看到了很多答案和不同的代码,但我都不明白。有没有简单的方法可以做到这一点?
如果有更复杂的方法,请包括解释。
谢谢。
现在没有(也不会有)一个通用的工具可以告诉你一个任意程序在没有实际运行的情况下需要多长时间,在一般情况下这可能需要很长时间。这是一个值得思考的有趣的 CS 概念:
http://en.wikipedia.org/wiki/Halting_problem
简而言之:您的程序运行时间无法提前知道,除非您在相当受限且数学严格的环境下运行,并且在提供某些保证的系统上对代码进行了适当的样式化:
http://en.wikipedia.org/wiki/Real-time_operating_system
如果您有经验,您可以通过查看数据结构的大小以及它们的数量来估计程序内存占用的规模。C++ 运算符sizeof
可以帮助您确定任何单个对象消耗的具体字节数,但它不会告诉您有关用于“簿记”幕后的内存量的任何信息。
但是再一次,您通常只需要运行它并使用进程监视器来查看会发生什么。很难预测,您只需凭经验检查实践中发生的情况:
跟踪每个进程的 CPU 和内存使用情况(Windows)
如果您使用的是 Windows,内置的 Windows 任务管理器将在“进程”选项卡中显示您的内存使用情况。同样,Mac OSX 有“活动监视器”,它会显示你的内存使用情况。程序中的数字将随着您的程序更改状态以及分配/取消分配内存而实时更改。
至于测量执行时间,您可以使用计时器函数获取执行前后的当前系统时间,然后进行数学运算。
Windows 的QueryPerformanceCounter和QueryPerformanceFrequency以及mac/linux 机器上的gettimeofday 。
如果您需要有关应用程序的更具体的性能相关信息, AMD CodeAnalyst等分析应用程序可以帮助您找出主要瓶颈所在。