我目前正在大学的ps3上开始一个项目,我们得到了如何优化代码的标记。
我和我的伙伴一直在查看位字段,因为我们正在处理0到255之间的数百万个数字。我们认为如果我们可以将4个整数打包成4个字节(典型的整数大小的内存块)而不是只有一个我们可以计算使用的内存。我们认为处理数据是我们可以做出的最大优化之一,我们正在研究一切。麻烦值得吗?就编辑内容而言,似乎很难继续下去。 我们还有一个问题,理想情况下我们需要依赖于数字的不同位字段,因为高达255需要9位,但大多数不需要这么多位。
然后我们也可以快速将数据传递给spu处理器,并希望在我们将并行性引入代码时看到大量改进。
答案 0 :(得分:4)
如评论中所述:
“优化通常是速度和空间之间的权衡。位域可以节省空间,但处理速度比整数慢。”
由于几个原因,很少使用位域
char
应该能够充分地完成工作,char
对比8比特,带有32的int_32
,而无需增加访问开销数据。 一般经验法则:
(请注意,如果您知道要存储的内容,可以预先估算尺寸。直到您开始优化缓存线(速度和内存位),只要它“适合”,可能会给你自己一个关于内存使用的记录)
仅供参考,位域的最常见用法是将数据打包到专为传输而设计的数据结构中。 This is just the first example I could find
答案 1 :(得分:1)