1

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

有没有办法在开发阶段识别性能瓶颈。代码分析是否会在性能方面提供任何提示?

4

4 回答 4

1

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

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

于 2009-05-30T13:57:56.643 回答
0

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

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

例如:如果您始终对六个元素的列表进行排序,那么将冒泡排序更改为快速排序不会显着影响您的应用程序。或者,如果您在半夜运行一次排序,并且不会延迟其他处理。

于 2009-05-30T14:01:56.030 回答
0

如果我们谈论的是 .NET,那么是与否…… FxCop(或内置代码分析)中有许多处理性能问题的规则。但是,此列表相当短且性质有限。

话虽如此,没有理由不能使用更多规则(启发式或其他规则)来扩展 FxCop,以捕捉潜在问题区域并标记它们。这只是一个事实,没有人(据我所知)为此(还)投入了大量工作。

于 2009-05-31T01:17:56.583 回答
0

一般来说,不会,尽管根据经验,我可以查看一个我以前从未见过的系统并识别出一些容易出现性能问题的设计方法:

  • 就代码行数或类数而言,它有多大?这与过度设计导致的性能问题密切相关。

  • 有多少抽象层?每一层都有可能花费比必要更多的周期,并且这种影响会复合,尤其是如果每个操作都被认为是“非常有效”的。

  • 是否有需要保持一致的单独数据结构?如果是这样,这是如何完成的?如果尝试通过通知保持数据结构紧密同步,这是一个危险信号。

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

  • 一个常见的主题是:程序员 A 创建包装复杂操作的函数,例如数据库访问以收集大量信息。程序员 A 认为这对其他程序员非常有用,并希望这些功能在一定程度上被使用,而不是随意使用。程序员 B 欣赏这些强大的功能并经常使用它们,因为它们只需一行代码就可以完成很多工作。(程序员 B 和 A 可以是同一个人。)您可以看到这如何导致性能问题,特别是如果分布在多个层上。

这些是首先想到的事情。

于 2009-06-02T16:50:39.333 回答