微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 每次运行时间相同的方法有何不同?

这可能是适合所有编程语言的问题(我想!).我在Groovy中有这样的代码

def a =['asd','sdf','sdr','asd','tty','gfdg','dfgt','rfgsf','rfas','asddre','asdfr','adsrf']
start = System.currentTimeMillis() 
println a.sort()
end = System.currentTimeMillis() 
println "Sort in-built is ${end-start}"
def InsertionSort(def b = [])
{
   for(out=1;out<b.size();out++)
    {
        temp = b[out]
        in1 = out;
        while(in1>0 && b[in1-1]>=temp)
        {
            b[in1] = b[in1-1]
            --in1
        }
        b[in1] = temp;
    }
    return b
}
start = System.currentTimeMillis() 
c = InsertionSort(a)
end = System.currentTimeMillis() 
println "Insertion Sort is ${end-start}"
println c

显然,上面的代码检查了内置排序函数和名为InsertionSort的函数的运行时间,它也执行与排序相同的工作.

现在我在不同的时间运行相同的代码.说当我在8:34:33 pm执行代码时,我得到输出为:

[adsrf, asd, asd, asddre, asdfr, dfgt, gfdg, rfas, rfgsf, sdf, sdr, tty]
Sort in-built is 4
Instertion sort is 6
[adsrf, asd, asd, asddre, asdfr, dfgt, gfdg, rfas, rfgsf, sdf, sdr, tty]

现在在8:35:03当我执行相同的程序时,我输出为:

[adsrf, asd, asd, asddre, asdfr, dfgt, gfdg, rfas, rfgsf, sdf, sdr, tty]
Sort in-built is 1
Insertion Sort is 1
[adsrf, asd, asd, asddre, asdfr, dfgt, gfdg, rfas, rfgsf, sdf, sdr, tty]

经过几分钟后,我输出为:

[adsrf, asd, asd, asddre, asdfr, dfgt, gfdg, rfas, rfgsf, sdf, sdr, tty]
Sort in-built is 0
Insertion Sort is 1
[adsrf, asd, asd, asddre, asdfr, dfgt, gfdg, rfas, rfgsf, sdf, sdr, tty]

您是否注意到每次执行程序时方法的运行时间都会发生变化?值得注意的是,从第一次执行和第二次执行开始,变化很大.那么这是否意味着Groovy将某个最新输出缓存到某个最小/秒?为什么每秒钟的变化怎么样?

提前致谢.

解决方法:

很多原因.

>占用cpu间的其他后台任务.
>在使用JVM的语言中,JVM可以启用JIT并优化某些运行,尤其是在不重新启动JVM的情况下重复运行代码块的情况下.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐