Sammanfattning av några prestandatester med flyttal från min vanliga skrivbordsdator Thu Feb 11 07:59:16 CET 2016 Executive summary: double är snabbare än float, utom när float är snabbare. Intel Core i7-4790K ("Haswell Refresh" från sommaren 2014) ASUS Z97-DELUXE ATX 32 GB minne (4*8 GB Corsair Vengeance 1600 MHz) Ingen överklockning Jag körde en miljard operationer, omväxlande multiplikation och division, i olika antal trådar. På min processor, med fyra kärnor och hypertrådning, gav det för det mesta bäst prestanda att använda åtta parallella trådar. Det stämmer med vad man kan förvänta sig. På den här datorn är en float 32 bitar och en double 64 bitar. Med operationer på en enda variabel (på C-källkodsnivån), där man kan gissa att allt görs i processorregister, kom jag som bäst upp i 1533.03 Mflops med float, och 6205.27 Mflops med double. Det gick alltså fyra gånger så fort med doubles som med floats, trots att float är 32 bitar och double 64. Här gissar jag att primärminnet inte används alls, och att prestandan begränsas av flyttalsberäkningarna i processorn. Om jag ska gissa orsaker, baserat på vad jag tror mig komma ihåg att jag läst, beror det på att processorns flyttalsberäkningar görs i snabb hårdvara med double-precision eller ännu mer, och att float-beräkningarna egentligen görs på samma sätt, men då måste värdena dessutom konverteras fram och tillbaka. Om man i stället har en miljard olika flyttal, lagrade i minnet, och varje tal måste hämtas och sparas i primärminnet, går det tvärtom (lite) fortare med float än double. Float gav som bäst 2315.10 Mflops och double gav som bäst 1592.77 Mflops. Här tror jag att prestandan begränsas av minnesbandbredd, och då är det inte orimligt att float (med i detta fall 4 gigabyte data) går snabbare än double (med i detta fall 8 gigabyte data). Men notera att det inte gick dubbelt så fort. Men som vanligt måste man komma ihåg att benchmarks är beroende av många saker: hårdvara, benchmark-programmet, kompilatorn, kompilatorinställningar, hur bra kylning man har på processorn, med mera. På annan hårdvara, till exempel med annorlunda implementation av flyttalsberäkningar, kan man få helt andra resultat. -- Thomas Padron-McCarthy, tel +46(0)707347013, http://www.aass.oru.se/~tpy/