c# – 每次运行时间相同的方法有何不同?
发布时间:2020-12-16 00:00:23 所属栏目:百科 来源:网络整理
导读:这可能是适合所有编程语言的问题(我想!).我在Groovy中有这样的代码: def a =['asd','sdf','sdr','asd','tty','gfdg','dfgt','rfgsf','rfas','asddre','asdfr','adsrf']start = System.currentTimeMillis() println a.sort()end = System.currentTimeMillis
这可能是适合所有编程语言的问题(我想!).我在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,asddre,asdfr,dfgt,gfdg,rfas,rfgsf,sdf,sdr,tty] Sort in-built is 4 Instertion sort is 6 [adsrf,tty] 现在在8:35:03当我执行相同的程序时,我输出为: [adsrf,tty] Sort in-built is 1 Insertion Sort is 1 [adsrf,tty] 经过几分钟后,tty] Sort in-built is 0 Insertion Sort is 1 [adsrf,tty] 您是否注意到每次执行程序时方法的运行时间都会发生变化?值得注意的是,从第一次执行和第二次执行开始,变化很大.那么这是否意味着Groovy将某个最新输出缓存到某个最小/秒?为什么每秒钟的变化怎么样? 提前致谢. 解决方法
很多原因.
>占用CPU时间的其他后台任务.>在使用JVM的语言中,JVM可以启用JIT并优化某些运行,尤其是在不重新启动JVM的情况下重复运行代码块的情况下. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |