gpt4 book ai didi

java - 编译器如何处理 for 循环中的 size 方法

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

假设 list 是一个 ArrayList,以下两个片段中哪个更快。

for(int i=0; i<list.size();i++){...}

int count = list.size();
for(int i=0; i<count;i++){...}

此外,优化(如果有)是否适用于 Android 的 ArrayAdapter?

int sCount = mAdapter.getCount();

澄清

在 for 循环中,编译器是每次都调用 list.size() 还是只调用一次并随后使用它。

请注意,每次调用 list.size() 都会实际去计数项目。这就是问题的本质。

最佳答案

在大多数情况下,速度将无法区分。也就是说,如果在循环执行时集合可能会发生变化,那么您的两个循环在语义上是不同的。集合的修改可以在循环中(或在循环中调用的代码中)或在并发执行的不同线程中。

具体回答您的“澄清”:是的,每次循环都会调用 size 方法。

我永远不会写这个循环的“优化”版本,除非我有明确的证据表明优化很重要(并且集合没有改变)。如果您的代码调整得如此之好,以至于此类调整为您提供了可衡量的加速,您应该非常高兴。

关于java - 编译器如何处理 for 循环中的 size 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18968509/

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