(참고 :. 내가 GMPY을 유지하는 데 도움이 내가 가장 최근의 릴리스에서 꽤 많은 최적화를 구현했습니다)을 MPZ에 소수를 추가 할 때
GMPY의 V1.11가 mpz_add_ui
를 사용 않습니다. GMPY의 최신 버전은 작은 숫자로 작업 할 때 이전 버전보다 약 25 % 빠릅니다. 그것은 긴에 파이썬 INT로 변환하고 MPZ에 파이썬 INT로 변환하는 것보다 mpz_add_ui
전화를 빨리하기 때문에
With GMPY 1.04
$ py26 -mtimeit -s "import gmpy;a=gmpy.mpz(10**1000)" "a+1"
10000000 loops, best of 3: 0.18 usec per loop
$ py26 -mtimeit -s "import gmpy;a=gmpy.mpz(10**1000);b=gmpy.mpz(1)" "a+b"
10000000 loops, best of 3: 0.153 usec per loop
With GMPY 1.11
$ py26 -mtimeit -s "import gmpy;a=gmpy.mpz(10**1000)" "a+1"
10000000 loops, best of 3: 0.127 usec per loop
$ py26 -mtimeit -s "import gmpy;a=gmpy.mpz(10**1000);b=gmpy.mpz(1)" "a+b"
10000000 loops, best of 3: 0.148 usec per loop
, 적당한 성능 이점이있다. 긴 시간 동안 GMP 함수를 네이티브 연산과 비교하여 호출했을 때 10 배의 성능 저하가 있다면 놀랄 일이 아닙니다.
몇 개의 작은 숫자를 하나의 긴 길이로 누적하여 한 번에 큰 번호에 추가 할 수 있습니까?
흥미 롭습니다. 산술 연산의 C++ 오버로드를 사용하고 있습니다. 아마도 이러한 C++ 바인딩은이 빠른 방법을 사용하지 않을 수도 있습니다. 나는 내일 몇 가지 검사를 할 것입니다. 감사! – sligocki