這可能是適合所有編程語言的問題(我猜!)。我在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
顯然上面的代碼檢查的內置sort
功能和我的函數命名爲InsertionSort
這也做了同樣的工作作爲sort
運行時間。
現在我運行這個相同的代碼在不同的時間。再說,當我在一次執行代碼下午8點34分33秒,我得到的輸出是:當我執行相同的程序,我得到輸出
[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將最新的輸出緩存在某個地方,幾分鐘/秒?每秒如何改變?
在此先感謝。
您的排序結果被緩存了嗎? –
不,我不這樣做..我在問Groovy是否做到這一點? –
除非你運行這2-10秒,你會得到一些隨機變化。您可以在循環中多次執行相同的排序(在未排序的列表中),以使其持續很長時間,並且需要平均時間。 –