【问题标题】:Alternative for array comparison for performance improvement用于提高性能的阵列比较的替代方案
【发布时间】:2012-08-23 10:36:35
【问题描述】:

我有一个thread,它每隔一秒比较两个长的arraylist(显然一个数组列表发生了变化,所以我比较了)。性能降低,CPU 利用率急剧增加。我想知道提高 CPU 性能的解决方案。有什么好方法?除了使用数组列表还有其他方法吗?

【问题讨论】:

  • 这取决于您要比较什么以及您使用什么算法来比较?
  • 您能否通过比较描述一下您想要实现的目标,以及您在两个列表中拥有哪些数据?
  • 我正在使用冒泡排序算法,并且两个数组列表都包含相同数据类型的对象。
  • 为什么要使用冒泡排序?内置的排序功能将加载更快。
  • 你能详细介绍一下“内置排序功能”吗?

标签: java android performance cpu-usage


【解决方案1】:

Java Collections 框架包含用于对 ArrayList(以及与此相关的其他集合)进行排序的方法,这将比您的冒泡排序实现更有效,这是 O(n^2),最坏的情况 - 您将能够使用集合实现 O(n log n)。

用法如下:

Collections.sort(yourArrayList);

这里有一个用法示例: http://onjava.com/onjava/2003/03/12/java_comp.html

【讨论】:

    【解决方案2】:

    您可以保留 ArrayList 并存储它是否已更改。因此,如果您更改它,请执行boolean changed = true 之类的操作。然后,当您想检查时,您可以检查if(changed),而不是遍历整个列表。然后记得在每次检查时设置changed = false

    【讨论】:

    • 但如果只想更改数据怎么办?在那种情况下,需要进行比较吗?
    • 问题是我没有更改列表并且列表是从系统中检索的。我只是将旧列表与新列表 1 进行比较以检查事件
    • @AbhishekB:好的。问题中没有提到这一点。
    • @AbhishekB:你为什么不使用观察者模式意味着如果有任何改变,它会自动更新观察者的值。
    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2023-01-24
    • 1970-01-01
    • 2017-07-18
    • 2020-05-29
    • 1970-01-01
    相关资源
    最近更新 更多