問題:
を使用する場合big.Int の場合、多くの場合、値が 0 であるかどうかをテストする必要があります。big.Int を、big.Int を表す big.Int と比較するときに、 0 (例: zero := big.NewInt(0)) は機能しますが、0 に特化したより早い方法はありますか?
解決策:
はい、2 つあります別の big.Int:
1 と比較するよりも大幅に高速な 0 をテストする方法。ビット スライスの長さを確認します:
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 中国語 Web サイトの他の関連記事を参照してください。