Donnerstag, 1. Mai 2014

Compiler Benchmark

Ich habe eine kleine Sammlung selbst implementierter Kryptographie, wie ich im letzten Post schon angedeutet habe. Was kann man nun mit kaum/gar nicht optimierten krypto-Funktionen anfangen? Man kann sie natürlich benutzen, um die Daten, die man mit eigenen Programmen verwaltet, zu verschlüsseln. Aber noch viel besser kann man optimierende Compiler darauf los lassen und sehen, welcher am besten optimiert.
Hier sind also meine Messdaten. Grün ist Linux, Blau ist Windows.
Als Compiler Option habe ich jeweils nur -O3 (oder vergleichbar) übergeben. Das schlechte Abschneiden des Microsoft Compilers liegt übrigens daran, dass er Sonderwünsche betreffend der AES-NI Befehle hatte, weshalb dort der reine-Software-Zweig gemessen wurde. Messwerte für den Linux 32 Bit Intel Compiler fehlen, da die Installation scheinbar schief gegangen ist und 32 Bit auf Linux meiner Meinung nach nur eine sehr untergeordnete Rolle spielt.

Besonderes Augenmerk sollte übrigens auf die Unterschiede zwischen 32 und 64 Bit gelegt werden. Nehmt das ihr Leute die glauben, dass 64 Bit nur wegen des RAM gut sei ;) Zugegebenermaßen arbeiten Threefish sowie SHA512 mit 64 Bit breiten Worten, die auf einem 64 Bit Betriebssystem mindestens doppelt so schnell verarbeitet werden können.

Es ist auf jeden Fall interessant zu sehen, dass verschiedene Compiler verschiedene Warnungen ausgeben -- und dass der Microsoft Compiler bis 2012 scheinbar noch nichts vom c99 Standard wusste.
Außerdem sind die farbigen Ausgaben von clang und seine statische Code Analyse sehenswert.
Den höchsten Komfort bietet meiner Meinung nach gcc, der dank MinGW-w64 auch unter Linux für Windows kompiliert -- und dabei Code erzeugt, der in diesem Test sehr konkurrenzfähig ist.

Keine Kommentare:

Kommentar veröffentlichen