gpt4 book ai didi

Groovy for 循环执行时间

转载 作者:行者123 更新时间:2023-12-04 01:01:47 25 4
gpt4 key购买 nike

哦,时髦的大师们,

此代码片段在大约 1 秒内运行

    for (int i in (1..10000000)) {
j = i;
}

而这个需要将近 9 秒
    for (int i = 1; i < 10000000; i++) {
j = i;
}

为什么会这样?

最佳答案

好的。这是我对为什么的看法?

如果将两个脚本都转换为字节码,您会注意到

  • ForInLoop 使用范围。迭代器用于在每个循环期间前进。直接与int(或Integer)进行比较(<)来判断是否满足退出条件
  • ForLoop 使用传统的增量、检查条件和执行操作。为了检查条件 i < 10000000,它使用 Groovy 的 ScriptBytecodeAdapter .compareLessThan。如果您深入研究该方法的代码,您会发现比较的双方都被视为对象,并且有很多事情在进行,转换,将它们作为对象进行比较等。

  • ScriptBytecodeAdapter .compareLessThan --> ScriptBytecodeAdapter .compareTo --> DefaultTypeTransformation 。相比于

    typehandling 包中有其他类专门为数学数据类型实现了 compareTo 方法,不确定为什么没有使用它们,(如果没有使用它们)

    我怀疑这是第二个循环需要更长的时间的原因。
    再次,如果我错了或遗漏了什么,请纠正我......

    关于Groovy for 循环执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/920606/

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