如何在计数过程中提高golang的速度?

时间:2014-12-13 22:28:25

标签: performance go

我有下一个golang代码:

var c uint64;
for c = 1; c <=10000000000 ; c++ { }

运行时,执行时间约为26秒。

但是对于获得相同结果的下一个代码:

c = 0
for {
    c++
    if c == 10000000000 {
       break
    }
}

执行时间约为13秒。 那是为什么?

在C ++中,经过的时间是0秒。有什么建议可以提高golang的速度吗?

最好的问候。

1 个答案:

答案 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 ++优化认识到循环是没有意义的,因此它不会执行它。