捕获和记录软件组件性能的最佳实践

时间:2011-05-20 02:14:05

标签: performance statistics diagnostics

我正在寻找用于对我正在开发的软件执行诊断的良好(最好是即插即用)解决方案。我正在处理的软件有几个需要大量计算资源的组件,因此我们试图捕获这些组件的性能有两个原因:1)估计所需的计算资源,从而估算运行软件的成本,以及2)量化组件的“改进”(即如果我们修改代码和速度增加,那么这是一个改进)。我们的应用程序由搜索引擎和许多其他组件组成,了解搜索引擎的速度对最终用户也至关重要。

似乎很难找到解决方案,因为我不确定如何正确定义我的问题。但到目前为止我发现的似乎是基本的错误记录技术。目的是从数据中运行统计(例如统计回归)的解决方案将是最佳的。也许单元测试框架具有内置的测试计时器,但我们需要从应用程序的实时运行中捕获数据,以解决众多不同的情况。

所以真的有两个问题:

1)是否有针对这些类型测试的预定义解决方案?

2)对这类数据运行统计回归有什么好的参考吗?假设我们捕获了脚本的执行时间和输入数据的大小(例如查询)。我们可以在数据大小上回归时间,以了解更改数据大小对执行时间的影响。但是这些回归是棘手的,因为不清楚所有相关变量是什么。任何对分析性能数据的参考都是非常好的,并且对我认为的许多人都有好处!

由于 马特

1 个答案:

答案 0 :(得分:0)

像这样的大型应用程序将进行大量的非CPU处理, 所以找到优化点 你需要基于壁钟的,而不是基于CPU的采样。

gprof and some others only sample on CPU time,因此无法看到不必要的I / O或其他系统调用。 如果您确实设法找到并消除CPU密集型性能问题,那么I / O密集型性能问题只会占用更多的时间。

看看Zoom。 它是一个堆栈采样器,按行代码报告该行在堆栈上的挂钟时间百分比。 任何值得优化的代码点都可能就是这样一条线。 它还有一个漂亮的蝴蝶视图,用于浏览调用图。 (你不希望整个呼叫图。这将是一个毫无意义的老鼠窝。)