【发布时间】:2023-03-25 13:36:01
【问题描述】:
如果必须计算给定 int 值的一小部分,例如:
int j = 78;
int i = 5* j / 4;
这比做的快吗:
int i = 1.25*j; // ?
如果是,是否有一个转换因子可以用来决定使用哪一个,例如在一个float 乘法的同时可以完成多少个int 除法?
编辑:我认为 cmets 明确表示浮点数学会变慢,但问题是,慢了多少?如果我需要将每个 float 乘法替换为 N int 除法,那么 N 将不再值得这样做吗?
【问题讨论】:
-
你对每一个都进行了基准测试吗?
-
这些数字中有多少是动态的?
-
@KerrekSB 指的是编译器为您优化所有这些。因此,为什么基准测试很重要。
-
这似乎是过早的优化,还要注意
1.25字面量实际上是double,而不是float。 -
您展示的两个备选方案可能会产生不同的结果。先根据想要的结果进行选择,再根据性能进行选择。
标签: c++ optimization floating-point division multiplication