Heim > Backend-Entwicklung > Golang > Gibt es eine schnellere Möglichkeit, zu überprüfen, ob ein big.Int Null ist?

Gibt es eine schnellere Möglichkeit, zu überprüfen, ob ein big.Int Null ist?

Linda Hamilton
Freigeben: 2024-11-29 04:38:15
Original
920 Leute haben es durchsucht

Is There a Faster Way to Check if a big.Int is Zero?

Gibt es eine schnellere Möglichkeit zu testen, ob ein big.Int 0 ist?

Problem:

Beim Arbeiten mit Wenn Sie big.Ints verwenden, müssen Sie häufig testen, ob der Wert 0 ist. Beim Vergleich von big.Int mit einem big.Int, das 0 darstellt (z. B. null := big.NewInt(0)) funktioniert, gibt es einen schnelleren Weg speziell für 0?

Lösung:

Ja, es gibt zwei Möglichkeiten um auf 0 zu testen, die deutlich schneller sind als im Vergleich zu anderen großen.Int:

1. Überprüfen Sie die Bits-Slice-Länge:

big.Int macht die Bits()-Methode verfügbar, die einen Byte-Slice zurückgibt, der die interne binäre Darstellung des Werts darstellt. Für 0 ist dieses Slice leer (null). Daher können Sie einfach überprüfen, ob die Länge des Bit-Slice 0 ist:

if len(i1.Bits()) == 0 {
}
Nach dem Login kopieren

2. Überprüfen Sie die Bitlänge:

Die BitLen()-Methode gibt die Anzahl der Bits zurück, die zur Darstellung des Werts erforderlich sind. Für 0 ist die Bitlänge 0. Daher können Sie auch Folgendes verwenden:

if i1.BitLen() == 0 {
}
Nach dem Login kopieren

Benchmark-Ergebnisse:

Im Vergleich zum traditionellen Vergleichsansatz beides Die oben genannten Methoden sorgen für erhebliche Leistungsverbesserungen:

BenchmarkCompare-8      76975251            13.3 ns/op
BenchmarkBits-8         1000000000           0.656 ns/op
BenchmarkBitLen-8       1000000000           1.11 ns/op
Nach dem Login kopieren

Testen auf 1

Obwohl nicht so schnell wie das Testen auf 0, kann ein ähnlicher Ansatz verwendet werden, um zu testen, ob ein big.Int gleich 1 ist: Überprüfen Sie, ob der Bitinhalt 1 darstellt und das Vorzeichen positiv ist.

Das obige ist der detaillierte Inhalt vonGibt es eine schnellere Möglichkeit, zu überprüfen, ob ein big.Int Null ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage