美文网首页Golang进阶
【Golang】二进制这次可能会伤了你的心

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

作者: qishuai | 来源:发表于2017-11-10 23:08 被阅读82次

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

    争端是这样的:判断一个数值的奇偶性,二进制运算快还是求余运算快(一篇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时善于做测试,养成好习惯。

    相关文章

      网友评论

        本文标题:【Golang】二进制这次可能会伤了你的心

        本文链接:https://www.haomeiwen.com/subject/sdgimxtx.html