gpt4 book ai didi

java - GC 优化 : for vs foreach

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:41 27 4
gpt4 key购买 nike

我一直在尝试优化我的一些代码,并且我得出了一个关于 fors 的奇怪结论。

在我的测试用例中,我创建了一个包含主要 Activity 的新项目。该 Activity 初始化一个包含 500 个对象的列表,运行显式 GC 并启动线程。线程循环函数 doCalculations。

this.objects 是一个包含 500 个 MyObject 的列表,previous 是 MyObject,value 是 int。功能逻辑没有逻辑,它们只是在那里做事。区别在于内部 for。

功能1

public void doCalculations()
{
for(MyObject o : this.objects)
for(int i=0; i<this.objects.size(); i++)
if(this.objects.get(i) == o)
o.value = this.objects.get(i).value;
}

功能二

public void doCalculations()
{
for(MyObject o : this.objects)
for(MyObject o2 : this.objects)
if(o2 == o)
o.value = o2.value;
}

在我的 nexus s 上每 ~10 秒调用一次函数 2 GC,释放~1.7MB。

对于函数 1,GC 永远不会出现。

这是为什么呢?

最佳答案

一个创建迭代器,另一个不创建。

GC 实际上是您应用程序中的瓶颈吗? (这似乎不太可能。包括我在内的许多开发人员会认为可读性的好处超过几微秒的 GC。)

也就是说,您的整个循环无论如何都是空操作。

关于java - GC 优化 : for vs foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13997679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com