我有下一个golang代码:
var c uint64;
for c = 1; c <=10000000000 ; c++ { }
运行时,执行时间约为26秒。
但是对于获得相同结果的下一个代码:
c = 0
for {
c++
if c == 10000000000 {
break
}
}
执行时间约为13秒。 那是为什么?
在C ++中,经过的时间是0秒。有什么建议可以提高golang的速度吗?
最好的问候。
答案 0 :(得分:5)
首先,您需要确保循环次数相同。将c
个变量声明为uint64
。否则,c
可能被声明为32位整数,它将溢出。
package main
func main() {
var c uint64
for c = 1; c <= 10000000000; c++ {
}
}
定时:
real 0m5.371s
user 0m5.374s
sys 0m0.000s
和
package main
func main() {
var c uint64
for {
c++
if c == 10000000000 {
break
}
}
}
定时:
real 0m5.443s
user 0m5.442s
sys 0m0.004s
Go时间相等。
C ++优化认识到循环是没有意义的,因此它不会执行它。