静态代码分析和应用程序性能之间是否存在关联

时间:2009-05-30 13:49:20

标签: performance analysis

我的问题: 性能测试通常在应用程序与各种模块集成并准备部署后完成。

有没有办法在开发阶段确定性能瓶颈。代码分析是否会提示@ performance?

4 个答案:

答案 0 :(得分:1)

这完全取决于您在代码分析期间运行的规则,但我认为您不能仅仅通过CA来防止性能瓶颈。

从我的过期看,性能问题通常非常复杂,要找到真正的问题,你必须运行性能测试。

答案 1 :(得分:0)

不,除非是非常小的情况(例如,对于Java,在循环中使用StringBuilder而不是字符串追加)。

原因是,在您使用相关数据集运行整个应用程序之前,您不会知道特定代码如何影响整个应用程序。

例如:如果您一直在排序六个元素的列表,则将bubblesort更改为quicksort不会显着影响您的应用程序。或者,如果您在半夜运行排序,并且不会延迟其他处理。

答案 2 :(得分:0)

如果我们正在谈论.NET,那么是和否...... FxCop(或内置代码分析)中有许多规则来处理性能问题。但是,这份清单相当简短,性质有限。

话虽如此,没有理由说FxCop无法通过更多规则(启发式或其他方式)扩展来捕获潜在的问题区域并标记它们。事实上,没有人(我知道)已经为此做了很多工作(

答案 3 :(得分:0)

一般来说,不,虽然from experience我可以看一个我以前从未见过的系统,并认识到一些容易出现性能问题的设计方法:

  • 在代码行数或类数方面有多大?这与过度设计引起的性能问题密切相关。

  • 有多少抽象层?每一层都有机会花费超过必要的周期,这种效果会复合,特别是如果每​​个操作都被认为是“非常有效”的。

  • 是否需要保持协议的单独数据结构?如果是这样,这是怎么做到的?如果通过通知尝试使数据结构保持同步,那就是一个红旗。

  • 系统输入信息的类别中,有些是低频变化吗?如果是这样,很可能应该“编译”而不是“解释”。这在性能和易开发性方面都是一个巨大的胜利。

  • 一个常见的主题是:程序员A创建包含复杂操作的函数,比如DB访问以收集大量信息。程序员A认为这对其他程序员非常有用,并且期望这些函数在某个方面使用,而不是随意使用。程序员B很欣赏这些强大的功能,并且使用它们很多,因为它们只需要一行代码即可完成。 (程序员B和A可以是同一个人。)您可以看到这会导致性能问题,特别是如果分布在多个层上。

这是我想到的第一件事。