开始微优化不是我的目标,所以如果这就是结果,我很乐意放弃这个问题。但我即将开始做出一些设计决策,并希望了解更多信息。
我正在阅读和处理一种文件格式,其中包含许多以明确定义的格式记录的数据结构。我已经在代码中将它们表示为结构。
现在,如果我将结构与 1 字节对齐打包#pragma pack(1)
,我可以将 IO 流中的结构直接读取到结构指针上。这很方便。如果我不打包结构,我可以fread
将字段一个接一个或一个fread
块一个接一个地打包,reinterpret_cast
结构字段一个接一个,这可能会很快变老。
作为参考,这些结构将被(可能)数千人读取,并且可能会对它们进行一些数字运算。它们主要由无符号 16 位整数(约 60%)、无符号 32 位整数(约 30%)和一些 64 位整数组成。
所以手头的问题是,我...
- 进行数以万计的微小呼叫
fread
? - 读取块并复制相关字节?
- 打包结构并直接阅读它们?