Bin gerade auf einem Tablet mit Atom Z3735F@1300Mhz unterwegs und habe mal die beiden Versionen FPU und SSE verglichen. Ernüchterung sondergleichen, beide annähernd gleich schnell!
Kurz mal bei Agner Fog geblättert, nun ist auch klar warum!
Der SSE Befehl DIVPD, welcher gleichzeitig zwei 64-Bit-Double dividieren kann, wird im Kapitel für den Atom folgendermaßen erwähnt:
Division is slow and not pipelined. A single precision scalar floating point division takes 30clock cycles. Double precision takes 60 clock cycles. A 64-bit integer division takes 207clock cycles.
60 Takte für eine Division....ohne Worte...die "richtigen" Prozessoren machen das in 15-20 Takten (//EDIT wenn pipelined genaugenommen dann in 6-7 Takten) , also mindestens 3-4x schneller! Weiterhin sind auch die ADDPD nicht pipelined, das fällt aber garnicht ins Gewicht!
Wenn man optimiert, sollte man also auch die Plattform im Auge behalten, ansonsten kann man sich die Arbeit sparen
Allerdings kann es aber auch sein, dass man auf einem bestimmten Prozessor ohne großartigen Gewinn optimiert, und dieser Code aber auf einer anderen Maschine eine immense Beschleunigung erlebt!
Knowhow ist durch nichts zu ersetzen, außer durch mehr Knowhow ![]()
Das bezieht sich auf Bargeld!