我們有一個測量數據處理應用程序,目前所有數據保存爲C++ float
,這意味着我們的x86/Windows平臺上的32位/ 4位。 (32位Windows應用程序)。x86 4字節浮點數與8字節雙精度浮點數(對比long long)?
由於精度成爲問題,所以有討論轉移到另一種數據類型。目前討論的選項切換到double
(8字節)或在__int64
(8字節)之上實現固定的十進制類型。
使用__int64
爲基本類型的固定小數的解決方案,即使是討論的原因是,有人聲稱double
性能(仍然)比處理float
小號顯著惡化,我們可能會看到顯著的性能優勢使用原生整數類型存儲我們的號碼。 (請注意,我們真的會很好,固定小數精度,雖然代碼顯然會變得更加複雜。)
顯然我們需要在最後進行基準測試,但是我想問一下,更糟糕的是,看着現代處理器有什麼真相?我猜大數組可能會混淆緩存命中更多的浮動,但否則我真的不明白他們如何可以在性能上有所不同?
「[雙打]混亂的緩存命中更多的漂浮,但否則我真的不明白他們如何可以在性能上有所不同?」呃......是不是計算出更準確的結果,至少是一個可能更費時的任務呢?我從來沒有對這些東西進行過基準測試......我會更加懷疑像日誌或權力這樣更復雜的功能。 – 2010-11-12 09:14:10
爲什麼不寫一個簡單的壓力測試來比較算術運算與浮點數組相比陣列加倍和驗證結果的第一手? – Saul 2010-11-12 09:16:02