c++ - 如何加快 float 到整数的转换?

标签 c++ c performance optimization floating-point

我们在项目中进行了大量的浮点到整数的转换。基本上是这样的

for(int i = 0; i < HUGE_NUMBER; i++)
     int_array[i] = float_array[i];

执行转换的默认 C 函数非常耗时。

是否有任何解决方法(可能是手动调整的功能)可以稍微加快处理速度?我们不太关心精度。

最佳答案

这里的大多数其他答案只是试图消除循环开销。

仅限 deft_code's answer触及可能是真正问题的核心——将 float 转换为整数在 x86 处理器上的成本惊人地高。 deft_code 的解决方案是正确的,尽管他没有给出引用或解释。

这里是技巧的来源,有一些解释和版本,具体说明您是要向上、向下还是向零舍入:Know your FPU

很抱歉提供链接,但这里写的任何内容,如果没有复制那篇优秀的文章,并不能说明问题。

关于c++ - 如何加快 float 到整数的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429632/

相关文章:

c++ - 可以将 llvm::FunctionType 转换为 C/C++ 原始函数指针吗?

c++ - 使用模板而不是虚拟方法的管道模式

c++ - 大小如何与 memcpy 一起使用?

c - 有没有办法知道Linux符号表中的条目是函数还是变量?

python - 优化 ndb 中两个属性的不等式查询

performance - Lisp:衡量函数的性能

c++ - 读取应用程序的 list 文件?

c - assembly 中的阶乘函数

c - 比较2个单链接列表中的元素并进行程序崩溃(通常)

java - Thread.sleep(60 * 1000) 让我的程序 hibernate 半小时或更长时间