【发布时间】:2014-10-30 16:03:18
【问题描述】:
我目前正在大学里开始一个关于 ps3 的项目,我们得到了代码优化程度的分数。
我和我的伙伴一直在研究位字段,因为我们正在处理数百万个 0 到 255 之间的数字。我们想我们是否可以将 4 个整数打包成 4 个字节(典型的整数大小的内存块)而不是一个我们可以将使用的内存减半。我们认为处理数据是我们可以做出的最大优化之一,我们正在研究一切。值得麻烦吗?就编辑整数而言,这似乎是一件相当困难的事情。 我们还有一个问题,理想情况下,我们需要依赖于数字的不同位字段,因为多达 255 个需要 9 位,但大多数不需要这么多位。
然后,我们还可以将数据快速传递到 spu 处理器,并希望在我们将并行性引入代码时看到巨大的改进。
【问题讨论】:
-
“4 个整数到 4 个字节”不需要位域。使用
char类型,每个类型占用一个字节(unsigned char用于从 0 到 255 的值)。如果您希望位域小于一个字节,请使用位域。 -
优化通常是速度和空间之间的权衡。位域可以节省空间,但处理速度比整数慢。
-
这是您应该阅读的similar analysis。您将不得不考虑生成的机器代码将如何变化。
-
255 需要 8 位,而不是 9。
-
您的压缩看起来像 google 的 varints - developers.google.com/protocol-buffers/docs/encoding。您将需要时间来压缩/解压缩数据,这可能比传输整个整数更糟糕。
标签: c++ bit-manipulation ps3