捕获和记录软件组件性能的最佳做法

| 我正在寻找好的(最好是即插即用)解决方案,以对正在开发的软件进行诊断。我正在使用的软件具有几个需要大量计算资源的组件,因此,我们基于以下两个原因来尝试捕获这些组件的性能:1)估算所需的计算资源,从而估算运行软件的成本,以及2 )量化组件的“改进”(即,如果我们修改代码并提高速度,那么它就是一种改进)。我们的应用程序由搜索引擎以及许多其他组件组成,并且了解搜索引擎的速度对于最终用户也至关重要。 由于我不确定如何正确定义问题,因此很难找到解决方案。但是到目前为止,我发现的似乎是基本的错误记录技术。旨在从数据中去除统计数据(例如统计回归)的解决方案是最好的。也许单元测试框架具有内置的测试计时器,但是我们需要从应用程序的实时运行中捕获数据以解决众多不同的情况。 所以确实有两个问题: 1)是否存在针对此类测试的预定义解决方案? 2)对于此类数据进行统计回归是否有很好的参考?假设我们捕获了脚本的执行时间和输入数据的大小(例如查询)。我们可以将时间退回到数据大小上,以了解更改数据大小对执行时间的影响。但是,这类回归比较棘手,因为尚不清楚所有相关变量是什么。任何有关分析性能数据的参考都将是极好的,并且对许多人都有益! 谢谢 马特     
已邀请:
诸如此类的大型应用将进行大量的非CPU处理, 所以找到优化点 您将需要基于时钟的采样,而不是基于CPU的采样。 gprof和其他一些仅在CPU时间上采样,因此他们看不到不必要的I / O或其他系统调用。 如果您确实设法发现并消除了CPU密集型性能问题,那么I / O密集型问题将仅占大部分时间。 看看Zoom。 它是一个堆栈采样器,它按代码行报告该行在堆栈上的挂钟时间的百分比。 任何值得优化的代码点都可能是这样的一行。 它还具有用于浏览调用图的漂亮蝴蝶视图。 (您不希望整个调用图。它将是毫无意义的老鼠的巢。)     

要回复问题请先登录注册