Problème :
Lorsque vous travaillez avec big.Ints, il est souvent nécessaire de tester si la valeur est 0. En comparant le big.Int à un big.Int représentant 0 (par exemple, zero := big.NewInt(0)) fonctionne, existe-t-il un moyen plus rapide spécifiquement pour 0 ?
Solution :
Oui, il existe deux façons pour tester 0 qui sont nettement plus rapides que de comparer à un autre big.Int :
1. Vérifiez la longueur de la tranche de bits :
big.Int expose la méthode Bits(), qui renvoie une tranche d'octets représentant la représentation binaire interne de la valeur. Pour 0, cette tranche sera vide (nul). Par conséquent, vous pouvez simplement vérifier si la longueur de la tranche de bits est de 0 :
if len(i1.Bits()) == 0 { }
2. Vérifiez la longueur en bits :
La méthode BitLen() renvoie le nombre de bits requis pour représenter la valeur. Pour 0, la longueur en bits est 0. Par conséquent, vous pouvez également utiliser ceci :
if i1.BitLen() == 0 { }
Résultats de référence :
Par rapport à l'approche de comparaison traditionnelle, les deux les méthodes ci-dessus offrent des améliorations significatives des performances :
BenchmarkCompare-8 76975251 13.3 ns/op BenchmarkBits-8 1000000000 0.656 ns/op BenchmarkBitLen-8 1000000000 1.11 ns/op
Test pour 1
Bien qu'elle ne soit pas aussi rapide que tester 0, une approche similaire peut être utilisée pour tester si un big.Int est égal à 1 : vérifiez si le contenu des bits représente 1 et le signe est positif.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!