如果我需要将多个数字除以相同的值,那么先计算逆数会更好吗?

时间:2018-12-13 04:58:33

标签: c++

每时每刻,在代码中都会出现我需要将多个数字除以相同值的情况:

double d = divisor();

double a = firstNum() / d;
double b = secondNum() / d;
double c = thirdNum() / d;

因为乘法比除法快,所以我经常这样写<​​/ p>

double di = 1 / divisor();

double a = firstNum() * di;
double b = secondNum() * di;
double c = thirdNum() * di;

我想知道这样做是否真的可以节省任何时间。我的编译器足够聪明,可以自动执行此操作吗?值得让我的代码可读性降低吗?

1 个答案:

答案 0 :(得分:1)

不允许编译器将第一个片段转换为第二个片段,反之亦然,因为浮点算法很严格,并且这些片段不完全相等。

您是否自行保存任何内容取决于硬件和其他因素。只有在较大软件中的硬件上使用编译器进行测试才能证明。如果您想知道哪一个更快,那么差异可能并不明显。

如果您确定知道可读性强的代码要慢得多,以致无法满足性能要求,则可以考虑将其更改为可读性较差的更快的代码。