“性能调用图”和“方法详细信息”视图可帮助您找出应用程序中消耗时间最长的部分。然后您可以调查是否可以使这些消耗时间的区域更加有效。当分析应用程序的代码时,了解最常见的导致性能欠佳的编码错误很有用。
不必要的计算:随着应用程序的演化和算法的优化,或者随着数据的更改,在早先的版本中需要的部分代码会逐渐被废弃,但是从来没有除去这些代码。因此,许多大型程序执行的某些计算结果是从来都不会用到的。该无效代码所浪费的时间会引起瓶颈。
其它常见的不必要计算是那些即使不需要它们,也会自动或缺省进行的计算。此类瓶颈的示例包括,在程序关闭期间不必要地释放数据结构的应用程序,或者即使没有用户需要也会打开与工作站的连接的应用程序。您可以对性能进行概要分析,以查找在无效代码上花费的时间。一旦您确信计算的结果没有用处,就可以除去该代码。
过早计算:任何在需要计算结果之前就执行的计算会导致瓶颈。例如,如果用户尚未请求执行排序,可能就没必要对数字列表进行排序。性能数据不能告诉您是否可以延迟计算;但是,它可以告诉您计算成本,从而您可以决定是否要延迟该计算。
不必要的重复计算:程序有时重复计算所需要的值,而不是高速缓存它们以供以后使用。例如,如果将确定常量字符串长度的计算嵌套在循环中,就会导致不必要的计算;字符串的长度被重复计算很多次,每次都获得相同的值。您的性能数据可以告诉您发生重复计算的位置,从而您可以决定是否在执行一次计算后就存储该值。
低效的计算:算法或数据结构的选择布局欠佳会引起多余的程序工作。在给定的数据集较小的情况下,初始性能似乎可以接受,但是当以后出现较大或较复杂的数据集时,性能就难以提高。性能概要分析可以告诉您不同级别上的每个计算的成本,以便您可以预测当使用较大型的数据集时是否会有问题。然后您可以使用另外一种算法和数据结构,使工作可以更快地完成。
内存泄漏和线程瓶颈也会降低性能。使用内存泄漏分析和线程分析概要分析集来收集数据以便解决这些问题。