Golang进阶

【Golang】二进制这次可能会伤了你的心

2017-11-10  本文已影响82人  qishuai

一提到二进制,我们通常认为他的运算速度应该会很快,因为更接近于底层;那么今天我们就来做一个测试,这次二进制可能要摔跟头了!

争端是这样的:判断一个数值的奇偶性,二进制运算快还是求余运算快(一篇CSDN的博客的结论是二进制运算会快的多)

那么让我们来写一个基准测试:

package test

import (
    "testing"
)

func BenchmarkEr(t *testing.B) {
    var n uint64 = 1 << 63

    t.ResetTimer()

    for i := 0; i < t.N; i++ {
        if n&1 == 1 {

        }
    }
}

func BenchmarkYu(t *testing.B) {
    var n uint64 = 1 << 63

    t.ResetTimer()

    for i := 0; i < t.N; i++ {
        if n%2 == 0 {

        }
    }
}

结果如下(说明这两种算法在效率上根本没有什么差别):


image.png

结论:二进制当然有其优势,单并不是所有的二进制运算都是高效率的;这里除了证明这样的结论,更重要的是,在coding时善于做测试,养成好习惯。

上一篇 下一篇

猜你喜欢

热点阅读