【发布时间】:2017-09-29 22:07:47
【问题描述】:
是否有任何静态代码分析器能够检测代码是否使用 java.util.List 的实例,由 java.util.LinkedList 实现并通过索引(而不是 java.util.Iterator)迭代它导致性能不佳?
例如
List list = new LinkedList();
// populate list ...
for(int ii=0; ii<list.size(); ii++) {
}
检查了 findbugs、spotbugs、huntbugs、google error-prone、pmd,但到目前为止还没有运气。
【问题讨论】:
-
嗯...不。原因很明显。
-
@MickMnemonic 你有什么问题?
-
我不认为您可以找到具有此功能的分析仪开箱即用,但我相信您可以配置此类检测规则,例如在 Fortify 中。
-
你可以编写一个容易出错的检查,在一个循环中找到对
LinkedList.get的调用,其保护包含对LinkedList.size()的调用。但请注意,这并不真正属于容易出错的标准版本的范围,因为它并不代表正确性问题。 -
@MickMnemonic 这不是
foreach循环,而是按索引 循环。应该很明显为什么这对于LinkedList具有二次性能。
标签: java performance linked-list iterator static-code-analysis