Wo finde ich die GMP.DLL in der gut optimierten 64 Bit Variante für Windows?

...komplette Frage anzeigen

1 Antwort

Du könntest dir GMP in einer Cygwin-Umgebung als optimierte 64 Bit DLL bauen, und diese dann einfach in dein VS Projekt einbinden. :)

Der GCC (z. B. im Gewand von MinGW) benutzt ein anderes Format für Objektdateien, als MS, aaaaaaber eine fertig kompilierte und gelinkte DLL ist ABI-kompatibel. (statische Bibliotheken werden aus diesem Grunde natürlich NICHT funktionieren, aber das ist ja selbstredend)

Evtl. musst du danach "nur" noch ein paar Header für VS anpassen, wenn überhaupt ... vielleicht hast du ja Glück. :)

Wenn du faul bist, dann installiere dir neben VS doch einfach CodeBlocks und baue die DLL damit. Allerdings würde ich dringendst dazu raten, einige Compilerflags per Hand zu setzen, da wir hier ja von GMP reden, und ich mir schon denken kann, was du so ungefähr vor hast. :)

Viel Erfolg! :)

PS: So kannst du GMP unter Windows dazu überreden, einer DLL anstelle eine statischen Bibliothek zu bauen, und damit auch in VS nutzen zu können:

https://stackoverflow.com/questions/27543253/build-procedure-for-dll-of-gnump-library-on-windows

Vielleicht ist das hilfreich. :)

Danke für die Antwort. Den Code anzupassen ist extrem Aufwendig -> man kommt vom 100. zum 1000. ... lauter Abhängigkeiten, Compilerschalter, immer fehlt was... CPU-Besonderheiten...

Mit der DEF-Datei hatte ich auch schon probiert -> kein Erfolg.

Eine andere libgmp-10.dll habe ich nun gefunden -> Funktionen die ich brauche sind alle da -> per LoadLib... eingebunden

Erfolg bei Iteration mit 26stelligen Zahlen: 

32 Bit-DLL V4: 11,2 s
32 Bit-DLL V5: 6,8 s
64 Bit DLL V5: 3,2 s

Also mehr als doppelt so schnell!!!

1
@hypergerd

Ja, das mit den Abhängigkeiten ist ärgerlich, und mit einem ähnlichen Ergebnis habe ich zwar gerechnet, aber nicht damit, dass die 64-Bit Variante um den Faktor Zwei vorne liegt.

Ich habe auch gerade etwas mit C++ entwickelt und dabei festgestellt, dass Clang++ ohne zusätzliche Änderungen am Code bei -O3 mehr als 10x schnelleren Code als g++ erzeugt. Dass die Unterschiede von Compiler zu Compiler so gravierend sind hat man ja auch nicht alle Tage.

Naja, dir dann auch noch viel Spaß beim Profiling! :)

0

Was möchtest Du wissen?