關於 迴圈 效率的問題

2021-07-03 08:10:41 字數 1027 閱讀 6741

今天寫到迴圈邏輯,糾結於是用更少的迴圈呼叫函式還是用更少的函式,多迴圈兩次。於是做了個實驗,發現基於c的lua,函式呼叫的代價果然很高。

local tb = {}

local

max = 10000000

for i=1, max

do tb[i] = i

endfunction

check(i,max)

if tb[i] == max-1

then

print("tb["..i.."] = "..tb[i])

endendfor i=1, max

do check(i,max-1)

check(i,max-1)

end

–這段**執行的平均時間為3.3s-3.4s。

「` local tb = {}

local max = 10000000

for i=1, max do

tb[i] = i

endfunction check(i,max)

if tb[i] == max-1 then

print(「tb[「..i..」] = 「..tb[i])

end

endfor i=1,max do

if tb[i] == max-1 then

print(「tb[「..i..」] = 「..tb[i])

end

end

for i=1,max do

if tb[i] == max-1 then

print(「tb[「..i..」] = 「..tb[i])

end

end

for i=1,max do

if tb[i] == max-1 then

pb[「..i..」] = 「..tb[i])

end

end「`

而這段**執行的平均時間為2.0s以內。所以可以認為,選擇方案二更合適。

關於for迴圈的執行效率問題

我以前遇到的問題大概都是這種型別的 1for inti 0 i 100 i 2 7 8和 9 for inti 0 i 10000 i 10 15 這兩個程式那個執行效率高,如果是以前我會毫不猶豫的說是第乙個效率高,這是由於cpu切換的次數比較多導致效能下降,知道這句話不理解什麼原理。我比較贊同下面...

關於for迴圈的累加效率問題(java)

累加的效率問題 目前有下面兩種方法 方法一 long sum 0 for int i 0 i value i 方法二 long sum 0 sum value 1 value 2 當value值等於10000,使用方法一,執行10次有4次會產生15毫秒左右耗時,使用方法二,執行10次無耗時產生。當v...

js FOR迴圈效率問題

引 每個接觸js的開發人員都不可避免的與for迴圈打交道,畢竟這是遍歷必不可少的工具之一。然而當迴圈次數比較大時,效率問題必須重視。在群眾,站長提出了這個話題,回去好好想了下,整理出來,大家一起討論討論。1.倒序比正序效率高?聽好多人說,倒序效率更高,好吧,做個實驗,讓事實說話 測試 複製 測試結果...