big.Int がゼロかどうかを最も効率的に確認するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-25 05:59:14
オリジナル
292 人が閲覧しました

How Can I Most Efficiently Check if a big.Int is Zero?

big.Int の高速 0 テスト

チャレンジ:

big.Int 値がに等しい0.

解決策:

効率を重視し、ゼロ初期化されたインスタンスと比較するよりも、big.Int のバイナリ表現を直接チェックすることをお勧めします。

big.Int は、Int.Bits() を通じて生のバイト表現へのアクセスを提供します。この公開されたスライスは、基になる配列への参照を維持し、コストのかかるコピーを回避します。

0 のテスト:

ドキュメントでは、big.Int のゼロ値が 0 と等しいと指定されています。したがって、nil はスライスのゼロ値であるため、空の Bits() スライスはゼロ値を示します。このチェックは従来の比較よりも高速です:

if len(i1.Bits()) == 0 {
  // i1 is 0
}
ログイン後にコピー

また、0 のビット長が 0 であることを確認するため、Int.BitLen() を使用することもできます:

if i1.BitLen() == 0 {
  // i1 is 0
}
ログイン後にコピー

ベンチマーク:

タイミングの比較により、顕著なパフォーマンスが実証されましたゲイン:

BenchmarkCompare: 13.3 ns/op
BenchmarkBits: 0.656 ns/op
BenchmarkBitLen: 1.11 ns/op
ログイン後にコピー

追加の注意:

同様の最適化を、big.Int 値が 1 に等しいかどうかのテストに適用できます。より複雑ですが、両方のチェックが必要になります。ビットの内容と記号。

以上がbig.Int がゼロかどうかを最も効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート