問題:
使用時big.Ints,通常需要測試該值是否為 0。在將 big.Int 與 big.Int 進行比較時代表 0(例如,零 := big.NewInt(0))有效,有沒有專門針對 0 的更快的方法?
解:
是的,有測試0 的兩種方法比與另一個big.Int 進行比較要快得多:
1。檢查位元切片長度:
big.Int 公開 Bits() 方法,該方法傳回表示值的內部二進位表示形式的位元組切片。對於 0,該切片將為空 (nil)。因此,您可以簡單地檢查位片的長度是否為 0:
if len(i1.Bits()) == 0 { }
2。檢查位長度:
BitLen() 方法傳回表示值所需的位數。對於 0,位元長度為 0。因此,您也可以使用這個:
if i1.BitLen() == 0 { }
基準結果:
與傳統的比較方法相比,上述方法提供了顯著的效能改進:
BenchmarkCompare-8 76975251 13.3 ns/op BenchmarkBits-8 1000000000 0.656 ns/op BenchmarkBitLen-8 1000000000 1.11 ns/op
測試1
雖然不如測試0 快,但可以使用類似的方法來測試 big.Int 是否等於 1:檢查位元內容是否代表 1 且符號為正。
以上是有沒有更快的方法來檢查 big.Int 是否為零?的詳細內容。更多資訊請關注PHP中文網其他相關文章!