小编fan*_*mnm的帖子

将float数组比较为int数组

我需要对已排序数字的数组进行优化的二进制搜索算法.我做了这个,发现使用float来存储数字比使用整数更快,因为最后我必须计算

(frameNumber-this->frameNumber[imin])/(this->frameNumber[imax]-this->frameNumber[imin])
Run Code Online (Sandbox Code Playgroud)

this->frameNumber[imin]是最大的frameNumber不等于,frameNumber并且this->frameNumber[imax]是最大的frame_umber .该代码用于计算两个关键帧之间的进度.frameNumber数组是静态的.我只需要对它进行一次排序.但是使用二进制搜索和上面的代码多次访问它来计算进度.

从int到float的转换花费了一些周期.然后我发现在asm中有很多fpu指令.我担心它们可能比整数慢.

所以这是问题所在.我可以将已排序的浮点数数组转换为int*并对其进行二进制搜索吗?

这意味着:

void binary_search(float key,float* array,...)
{
    int key_integer=*(int*)&key;
    int* array_intege(int*)array;
    binary_search_for_integers(key_integer,array_integer,...);
}
Run Code Online (Sandbox Code Playgroud)

或者我的上述结论是错误的?(比如将int转换为浮点数不是那么算,或者浮点数之间的比较与整数相同?

非常感谢!

c c++ floating-point floating-point-conversion

5
推荐指数
1
解决办法
670
查看次数