我有下一个 golang 代码:var c uint64;for c = 1; c <=10000000000 ; c++ { }当我运行它时,执行时间约为 26 秒。但是对于下一个获得相同结果的代码:c = 0for { c++ if c == 10000000000 { break }}执行时间约为 13 秒。这是为什么?在 C++ 中,经过的时间是 0 秒。有什么建议可以提高 golang 的速度吗?
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
首先,您需要确保循环次数相同。将两个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++ 优化认识到循环是没有意义的,所以它不会执行它。
- 1 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消