【发布时间】:2014-08-27 09:23:21
【问题描述】:
我使用的 Cortex MCU 不支持硬件中的浮点除法。 GCC 编译器通过基于软件来解决这个问题,但警告说它可能非常慢。
现在我想知道如何完全避免它们。例如,我可以将值因子 10000(整数乘法)放大,然后除以另一个大因子(整数除法),得到完全相同的结果。
但是这两个运算实际上会比单个浮点运算更快吗?例如,替换是否有意义:
int result = 100 * 0.95f
通过
int result = (100 * 9500) / 10000
要达到 95% 吗?
【问题讨论】:
-
试试看。是时候做一个虚拟应用和一些基准测试了。
-
通过测量可以轻松回答。 -1 表示零努力。
-
正确答案是在目标硬件 imo 上进行基准测试。
-
@Joe 简单地衡量更快的东西对我没有任何帮助。我想了解为什么它更快/更慢,并更好地了解处理器如何在内部处理这个问题。
-
@Muis 那么您的答案就在于您正在使用的特定 CPU 的数据表和您的编译器发出的汇编程序。它将特定于您的 GCC 版本和您的特定 cpu,以及您的编译器标志。欢迎使用嵌入式开发...
标签: c performance gcc embedded cortex-m