fla*_*nik 5 c++ performance storage bit-manipulation
我正在处理需要处理大量数据的问题.目前,其值表示为unsigned int.我知道真正的价值不超过限制1000.
我可以unsigned short用来存储它.这样做的好处是它将使用更少的存储空间来存储该值.性能会受损吗?
如果我决定将数据存储为short但所有调用函数都使用int,则会认识到在存储或提取值时我需要在这些数据类型之间进行转换.性能会受损吗?性能损失是否会引人注目?
如果我决定不使用short,只有10位打包成一个数组unsigned int.与以前相比,这种情况会发生什么?
dou*_*lep 10
这一切都取决于架构.位字段通常较慢,但如果您能够显着降低内存使用率,您甚至可以通过更好的CPU缓存和类似的东西获得性能.同样简短(尽管在任何情况下都不是戏剧性的).
最好的方法是使源代码能够轻松切换表示(当然,在编译时).然后,您将能够在您的具体情况下测试和分析不同的实现,例如更改一个#define.
另外,不要忘记过早优化规则.让它先工作.如果结果很慢/不够快,那么只能尝试加速.