如果我需要用同一个值除以几个数字,我先计算倒数好吗



在代码中,不时会出现我需要用同一值除以几个数字的情况:

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

由于乘法比除法快,我经常把它写成

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

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

编译器不允许将第一个片段转换为第二个片段,反之亦然,因为浮点运算很挑剔,而且这些片段并不完全等效。

你是否通过自己做来节省开支取决于硬件和其他因素。只有在较大的软件中用编译器在硬件上进行测试才能说明问题。很可能,如果你想知道哪一个更快,那么差异就不明显了。

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

相关内容

  • 没有找到相关文章

最新更新