0

我正在编写一个数值分析程序,有时微积分会给出一些非常小的系数,即a0=1.234542e-12

如果我计算一个包含 10 个值的数组(其中 6 个是小数字),然后我将它们中的每一个乘以 t^x(仅作为示例)为 x=1:10,那么计算速度更快吗?

  • 只保留少数原样
  • 检测小于 0.0 的数字threshold并将其替换为 0.0

问题主要是因为编译器可能只是不计算一个数字乘以 0,因为它总是 0,或者它可能只是将它相乘,而我让程序变慢以添加if条件只是为了检查一个数字是否是0 与否。

4

2 回答 2

3

如果您在问,就像您看起来的那样,这两种操作中哪个更快:

  1. 乘以一个数字向量,包括一些接近 0.0 的数字。
  2. 通过设置为 0.0 的数字向量运行接近 0.0 的数字,然后乘以向量。

好吧,我认为在限制中 1 会比 2 快。

于 2012-10-10T13:44:48.340 回答
2

我假设数组不是常量,而是程序的中间结果。

那么乘以 0 和乘以一个小数在速度上就完全没有区别了,因为这两种情况下执行的机器码是完全一样的。编译器不知道数组的内容。

于 2012-10-10T13:42:08.277 回答