c++ - 检测几乎为零并将它们替换为 0.0 或将它们保留为小数字是否更快?

标签 c++ visual-studio-2008 math numerical-methods

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

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

  • 保持小数字不变
  • 检测低于阈值的数字并用0.0代替

这个问题主要是因为编译器可能只是不对一个数乘以 0 进行微积分,因为它始终为 0,或者它可能只是将它相乘,而我添加 if< 会使程序变慢 条件语句只是为了检查数字是否为 0。

最佳答案

如果你问的是,这两个操作中哪个更快:

  1. 将数字 vector 相乘,包括一些接近 0.0 的数字。
  2. 遍历一个数字 vector ,将那些接近 0.0 的数字设置为 0.0,然后乘以该 vector 。

嗯,我认为在极限 1 会比 2 快。

关于c++ - 检测几乎为零并将它们替换为 0.0 或将它们保留为小数字是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12820029/

相关文章:

c# - "Temporarily Work Uncontrolled"能让我安全地保留 VSS 源代码控制吗?

c# - 有没有分析C#哪些函数调用哪些函数的工具?

c - C中的指针算术和 "generic"

algorithm - 寻找连续的数列

c++ - 与 C++ 代码中的 qml 对象交互

c++ - 从工作线程访问对象

sql - 此 SqlParameterCollection 不包含 ParameterName '@OE_PurchaseDate' 的 SqlParameter

javascript简单的数学问题

c++ - 初学者的 CGAL 教程

c++ - 执行步骤 “make”和-fno-stack-limit时,Qt Creator编译错误