当前位置: 首页 > 面试题库 >

在for循环条件下方法调用的效率

东方海
2023-03-14
问题内容

我正在编写一个游戏引擎,其中ArrayList使用for循环迭代保存在a 中的一组对象。显然,效率非常重要,因此我想知道循环的效率。

for (String extension : assetLoader.getSupportedExtensions()) {
    // do stuff with the extension here
}

getSupportedExtension()返回ArrayListString秒。我想知道的是,每次循环在新扩展上进行迭代时,是否都调用该方法。如果是这样,这样做会更有效:

ArrayList<String> supportedExtensions = ((IAssetLoader<?>) loader).getSupportedExtensions();

for (String extension : supportedExtensions) {
    // stuff
}

?提前致谢。


问题答案:

按照规范,这个成语

for (String extension : assetLoader.getSupportedExtensions()) {
  ...
}

扩展成

for (Iterator<String> it = assetLoader.getSupportedExtensions().iterator(); it.hasNext();)
{
    String extension = it.next();
    ...
}

因此,您询问的呼叫在循环初始化时仅发生一次。这是迭代器对象,其方法被重复调用。

但是,如果您真的对应用程序的性能感兴趣,那么您应该确保将重点放在大获胜而不是像这样的小土豆上。在任何代码段中,几乎都不可能使getter调用成为瓶颈。对于在HotSpot上运行的应用程序而言,此功能增加了一倍,它将内联getter调用并将其转换为直接现场访问。



 类似资料:
  • 本文向大家介绍C#中for循环、while循环循环执行的方法,包括了C#中for循环、while循环循环执行的方法的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下C#中的循环执行for循环 在这一节练习中,我们向大家介绍一下C#中的另一种重要的循环语句,for循环。 表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:逻辑表达式,循环控制条件;当条件为真时,循环执行循环体中的语句。

  • 问题内容: 我创建了一个for循环,该循环循环了元素出现在容器中的次数。for循环从HTML捕获一些数据,并创建一个JSON url,然后将返回一个值。然后应将该值添加到适当位置的HTML中。 问题似乎是for循环在进行所有Ajax调用之前完成,因此仅将最后一个值添加到HTML。我以为可以确保readystate等于4,但是该解决方案不起作用。我还尝试将完整而不是成功用作Ajax事件。有什么见解吗

  • 问题内容: 我是AJAX的新手,我正在编写一个用户脚本,该脚本将处理页面上的一堆链接并为每个链接进行AJAX调用。 简单地说,我有一个包含链接列表的页面。我希望遍历链接并获取AJAX来处理每个链接页面的内容,并报告该页面是否包含指定内容。 我遇到的问题是用于遍历linkList的[i]的值始终为6,应该永远不会。我假设我需要传递一些数据,以便当.done最终触发时,它从AJAX首次触发时知道其[i

  • 我正在编写一个python游戏,它有以下功能可以向用户询问。 最多可以有4名玩家(最少1名玩家,最多4名玩家) 它会问玩家的名字。如果名称已存在,程序将提示“名称已在列表中”,并要求再次输入名称 如果播放器在播放器名称输入中输入空字符串,它将退出。 它会询问玩家想要玩多少n个随机数字(使用randint(开始,停止)。最多只允许3位数字 我知道我必须使用

  • 在测试类中,有一个静态方法返回特定目录中的一组所有文件。 因为该方法调用自身来循环文件,所以我在该方法之外实例化了一组,以添加我找到的文件。第一次调用该方法时效果很好,但第二次调用时,被累加起来,由于return语句,我无法清除它。有什么想法吗? 如果我编写更多的方法,或者每次调用该方法时手动清除集合,我可能会解决这个问题,但这一切似乎都不优雅和干净。

  • 我是react的初学者,我已经编写了以下代码: 在render()中,onClick event有一个函数,即,如果以这种方式使用:{this.add}将创建以下错误: 未捕获错误:对象作为React子对象无效(已找到:带键的对象{调度配置,_targetInst,native事件,类型,目标,当前目标,事件阶段,气泡,可取消,时间戳,默认预防,isTrusted,视图,详细信息,...}) 为什