一提到二进制,我们通常认为他的运算速度应该会很快,因为更接近于底层;那么今天我们就来做一个测试,这次二进制可能要摔跟头了!
争端是这样的:判断一个数值的奇偶性,二进制运算快还是求余运算快(一篇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时善于做测试,养成好习惯。
网友评论