Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
6年前关闭。
我试图节省内存和时间,将32位浮点值存储在16位短变量中。为了做到这一点,我介绍了这样的转换函数:
然后,我使用第一个函数将输入数据转换为StoreType数组。每次我需要一些值时,我都会提取StoreType数据并使用第二个函数来获取浮点值。
但是当我由于内存优化而要估计加速选项并比较2种情况时:
如上所述-当StoreType == short int时
完全相同,但StoreType == float(第一行由“ typedef short int StoreType”代替)。
我看到,尽管我有所有预期(尽管计算方法相同,但使用浮动货币时,现金使用量较大),但在第二种情况下,时间却明显较小(例如,当测量误差小于1%时为10%)。
同时,我的算法速度理论上不应依赖于令人恐惧的计算结果(即精度)。而且,随着StoreType的更改,该程序的最终结果几乎不会更改(相差小于0.2%)。
该程序还包含许多具有转换后值的计算,因此与所有计算相比,类型转换时间预计可以忽略不计。
使用浮点数的程序怎么可能更快?
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
6年前关闭。
我试图节省内存和时间,将32位浮点值存储在16位短变量中。为了做到这一点,我介绍了这样的转换函数:
typedef short int StoreType;
StoreType FloatToShort( float x ) { return x/k; }
float ShortToFloat( StoreType x ) { return float(x)*k; }
然后,我使用第一个函数将输入数据转换为StoreType数组。每次我需要一些值时,我都会提取StoreType数据并使用第二个函数来获取浮点值。
但是当我由于内存优化而要估计加速选项并比较2种情况时:
如上所述-当StoreType == short int时
完全相同,但StoreType == float(第一行由“ typedef short int StoreType”代替)。
我看到,尽管我有所有预期(尽管计算方法相同,但使用浮动货币时,现金使用量较大),但在第二种情况下,时间却明显较小(例如,当测量误差小于1%时为10%)。
同时,我的算法速度理论上不应依赖于令人恐惧的计算结果(即精度)。而且,随着StoreType的更改,该程序的最终结果几乎不会更改(相差小于0.2%)。
该程序还包含许多具有转换后值的计算,因此与所有计算相比,类型转换时间预计可以忽略不计。
使用浮点数的程序怎么可能更快?
最佳答案
在第一种情况下,您将执行浮点运算以及从float
到short int
的转换(反之亦然)。
在第二种情况下,您具有相同的浮点运算,但是没有转换。除非我误解了您的问题,否则它就会更快。
关于c++ - 将float存储为short int。令人困惑的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19231688/
10-16 05:51