big.Ints로 작업할 때 값이 0인지 테스트해야 할 때가 있습니다. 표준 방법 이는 Cmp(zero) == 0을 사용하여 big.Int를 0과 비교하는 것입니다. 그러나 이는 특히 빠르고 효율적인 방법을 찾고 있는 경우 느린 작업이 될 수 있습니다. 0을 테스트합니다.
다행히도 더 빠른 방법이 있습니다. 한 가지 방법은 big.Int 표현의 원시 바이트를 나타내는 바이트 조각을 반환하는 Int.Bits() 함수를 사용하는 것입니다. 0의 경우 슬라이스가 비어 있습니다. 슬라이스의 길이를 확인하면 big.Int가 0인지 빠르게 확인할 수 있습니다.
import "math/big" func isZero(i *big.Int) bool { return len(i.Bits()) == 0 }
또는 Int.BitLen() 함수를 사용하여 빅의 비트 길이를 반환할 수도 있습니다. .Int. 0의 경우 비트 길이는 0이 됩니다.
import "math/big" func isZero(i *big.Int) bool { return i.BitLen() == 0 }
이 방법은 Cmp()를 사용하여 big.Int를 0과 비교하는 것보다 훨씬 빠릅니다. 벤치마크에 따르면 0에 대한 테스트의 경우 20배 이상 빠르며 1에 대한 테스트의 경우 10배 더 빠릅니다.
유사한 접근 방식을 사용하면 big.Int에서 값 1을 테스트하는 함수를 만들 수도 있습니다. 이 함수는 Int.Bits()에서 반환된 슬라이스의 길이가 1이고 유일한 요소가 1인지 확인합니다. 또한 big.Int의 부호가 양수인지 확인합니다.
import "math/big" func isOne(i *big.Int) bool { bits := i.Bits() return len(bits) == 1 && bits[0] == 1 && i.Sign() > 0 }
이 방법은 또한 Cmp()를 사용하여 1을 나타내는 big.Int와 big.Int를 비교하는 것보다 훨씬 빠릅니다. 벤치마크에 따르면 10배 이상 빠른 것으로 나타났습니다.
big.Int가 0인지 1인지 테스트하는 데 이러한 더 빠른 방법을 활용하면 코드 성능을 크게 향상시킬 수 있습니다.
위 내용은 Go에서 big.Int가 0인지 1인지 효율적으로 확인할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!