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 { }
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 { }
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
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!