나는 며칠 동안 MINGW에서 GMP 라이브러리를 설치하려고 노력 해왔다. 저는 주 단위로 __uint128_t
을 gcc와 linux64 비트 환경에서 사용했고, GMP와 mingw (32 비트 버전)에서 동일한 프로그램을 이식했습니다. __uint128_t
대신 mpz_class
개의 정수를 사용했습니다. 그렇다면 새로운 프로그램을 시작하고 ...! __uint128_t
과 64 비트로 완료하려면 16 분이 걸리며 GMP와 MINGW는 91 시간이 걸립니다 !!!gmp로 고정 된 크기의 정수 ...?
조금 속도를 높이려면 어떻게해야합니까? 32 비트 환경에서 128 비트 정수 수학을 수행하는 더 빠른 방법이 있습니까? 나는 128 비트 이상을 필요로하지 않으므로 GMP에게 "알았어, 단지 128 비트가 필요하고, 프리젠 테이션을 고정 시키지만 더 빨리 가라."고 말할 수있는 방법이 있습니까?
128 비트에서 어떤 작업을 수행해야합니까? ('+','-','<'/'>','*','/', 더 흥미로운 것이 있습니까?) – osgx
64 비트는 기본적으로 컴파일러에서 지원됩니다. 32 비트 단위를 사용하여 64 비트 산술을 수행하는 코드를 찾고 64 비트 단위를 사용하여 128 비트 단위로 구현하는 원리를 사용하십시오. 네이티브 128 비트 지원 (예 : SSE와 함께 사용 가능)보다 빠르지는 않지만 libgmp보다 빠를 것입니다. – user786653
64 비트가 컴파일러에서 지원 될 수 있지만 특히 실제 64 비트 환경 (IOW, 64 비트 레지스터 및 그 이상)에서 구분 (및 모듈) 및 곱셈과 같은 작업이 훨씬 빠릅니다. –