Maison > développement back-end > Golang > Existe-t-il un moyen plus rapide de vérifier si un big.Int est nul ?

Existe-t-il un moyen plus rapide de vérifier si un big.Int est nul ?

Linda Hamilton
Libérer: 2024-11-29 04:38:15
original
940 Les gens l'ont consulté

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

Existe-t-il un moyen plus rapide de tester si un big.Int est égal à 0 ?

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 {
}
Copier après la connexion

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 {
}
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal