gpt4 book ai didi

Java 嵌套 Foreach 转换时速度很慢

转载 作者:行者123 更新时间:2023-11-30 08:08:21 27 4
gpt4 key购买 nike

我正在用 Java 编写一个交换系统,但我似乎遇到了严重的性能问题。

下面的代码是执行变得非常慢的地方:

    outer:
for(ArrayList<Offer> listSell : sellOffers.values()) {
for(Offer sellOffer : listSell) {
ArrayList<Offer> listBuy = buyOffers.get(getStorageHash(sellOffer));
if(listBuy == null)
continue outer;
for(int i = 0; i < listBuy.size(); i++) {
Offer buyOffer = listBuy.get(i);
//todo - handle exchange
}
}
}

深入研究后,我发现以下行似乎是问题所在:

                Offer buyOffer = listBuy.get(i);

如果我将此行更改为以下内容,它将不再缩短执行时间:

                Object buyOffer = listBuy.get(i);

因此,当对来自 listBuy 的对象进行转换时,执行会出现重大延迟。有什么解决方法吗?我很难过。

提前致谢!

最佳答案

你测错了。

当您编写 Object buyOffer = listBuy.get(i); 时,内部循环没有副作用,JIT 编译器完全消除了循环。

使用 Offer buyOffer JIT 不允许删除循环,因为现在每个列表访问都有可能引发 ClassCastException 的副作用。

类型检查是一项快速操作,我怀疑它是您应用程序的瓶颈。很可能算法本身不是最优的,因为它具有三次复杂性。

关于Java 嵌套 Foreach 转换时速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188314/

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