>  기사  >  백엔드 개발  >  big.Int가 0인지 가장 효율적으로 확인할 수 있는 방법은 무엇입니까?

big.Int가 0인지 가장 효율적으로 확인할 수 있는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-25 05:59:14295검색

How Can I Most Efficiently Check if a big.Int is Zero?

big.Int에 대한 더 빠른 0 테스트

과제:

big.Int 값이 다음과 같은지 확인하는 코드 최적화 같음 0.

해결책:

효율성을 강조하며, 0으로 초기화된 인스턴스와 비교하는 것보다 big.Int의 바이너리 표현을 직접 확인하는 것이 좋습니다.

big.Int는 Int.Bits()를 통해 원시 바이트 표현에 대한 액세스를 제공합니다. 이 노출된 슬라이스는 기본 배열에 대한 참조를 유지하여 비용이 많이 드는 복사본을 방지합니다.

0에 대한 테스트:

문서에서는 big.Int 0 값이 0과 같다고 지정합니다. 따라서 빈 Bits() 슬라이스는 0 값을 나타냅니다. 왜냐하면 nil은 슬라이스의 0 값이기 때문입니다. 이 검사는 기존 비교보다 빠릅니다.

if len(i1.Bits()) == 0 {
  // i1 is 0
}

또는 Int.BitLen()을 사용하여 0의 비트 길이가 0인지 확인할 수 있습니다.

if i1.BitLen() == 0 {
  // i1 is 0
}

벤치마크:

비교 시점은 상당한 성과를 보여줍니다. 이득:

BenchmarkCompare: 13.3 ns/op
BenchmarkBits: 0.656 ns/op
BenchmarkBitLen: 1.11 ns/op

추가 참고:

big.Int 값이 1이면 테스트에 유사한 최적화를 적용할 수 있습니다. 더 복잡하기는 하지만 두 가지를 모두 확인해야 합니다. 비트 내용과 기호.

위 내용은 big.Int가 0인지 가장 효율적으로 확인할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.