我有下一個(gè) golang 代碼:var c uint64;for c = 1; c <=10000000000 ; c++ { }當(dāng)我運(yùn)行它時(shí),執(zhí)行時(shí)間約為 26 秒。但是對(duì)于下一個(gè)獲得相同結(jié)果的代碼:c = 0for { c++ if c == 10000000000 { break }}執(zhí)行時(shí)間約為 13 秒。這是為什么?在 C++ 中,經(jīng)過的時(shí)間是 0 秒。有什么建議可以提高 golang 的速度嗎?
1 回答

HUWWW
TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
首先,您需要確保循環(huán)次數(shù)相同。將兩個(gè)c變量聲明為uint64. 否則,c可能會(huì)被聲明為會(huì)溢出的 32 位整數(shù)。
package main
func main() {
var c uint64
for c = 1; c <= 10000000000; c++ {
}
}
定時(shí):
real 0m5.371s
user 0m5.374s
sys 0m0.000s
和
package main
func main() {
var c uint64
for {
c++
if c == 10000000000 {
break
}
}
}
定時(shí):
real 0m5.443s
user 0m5.442s
sys 0m0.004s
Go 時(shí)間是相等的。
C++ 優(yōu)化認(rèn)識(shí)到循環(huán)是沒有意義的,所以它不會(huì)執(zhí)行它。
- 1 回答
- 0 關(guān)注
- 225 瀏覽
添加回答
舉報(bào)
0/150
提交
取消