我们有一个测量数据处理应用程序,目前所有数据保存为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