我有一个花费太多时间的程序,所以我想稍微优化我的代码。
到目前为止,我已为每个变量使用double
类型。如果我更改为float
类型,是否会产生任何性能优势?
答案 0 :(得分:7)
不可能毫无疑问地回答这个问题:它将取决于您的代码和硬件。这种变化会产生许多可能的影响:
告诉实际性能差异的唯一方法是自己测试。听起来像一个简单的搜索&替换工作。
答案 1 :(得分:3)
最有可能的是,如果您的代码在非常大的内存块上运行,您将只会看到明显的改进。如果您对数百万个值的数组进行double
操作,则可以通过切换到float
将内存带宽减半。 (我假设您使用的标准架构float
为32位且double
为64位。)
在减少CPU负载方面,我不希望看到重大变化。对于某些操作来说可能有一点点差异,但最多可能只有几个百分点。
答案 2 :(得分:2)
对于双精度操作数,现代处理器在大约相同的时间内执行大多数FP操作,与单精度相同。降低单精度的唯一显着速度差异是:
总的来说,除了利基案例之外,它不太可能是重大胜利。如果你不熟悉浮点不精确的性质以及如何减少它,那么最好坚持双精度和它为你提供的增加的摆动空间。
答案 3 :(得分:0)
如果你想要更好的表现,你不应该这样做,如果你需要precision,你应该这样做。