Ein Unterschied von 2-5% zwischen den einzelnen Compilern ist durchaus denkbar, deine Ergebnisse mit hundertfacher Laufzeit deuten aber eher auf Fehler in der Implementierung hin.
Assembler ist wirklich nur das letzte Mittel, wenn alle anderen Optimierungen schon durch sind. OpenCL scheint hier der bessere Weg zu sein.
Multithreading und
DLL-Aufrufe geht natürlich, sofern die Funktionen in der
DLL auch threadsicher implementiert sind oder nur von einem Thread verwendet werden.