【问题标题】:LinkedList - Static Code Analysis - Iterating via indexLinkedList - 静态代码分析 - 通过索引迭代
【发布时间】: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


【解决方案1】:

这里是 google 容易出错的 github 上的讨论/补丁链接

https://github.com/google/error-prone/issues/762

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2012-10-04
    • 2023-03-25
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多