【发布时间】:2012-02-15 07:04:18
【问题描述】:
我必须解码一些字节数组(原始数据)。它可以包含基本数据类型(int、unsigned int、char、short 等)。根据定义的结构,我需要解释它们。下面是例子:
struct testData
{
int a;
char c;
};
unsigned char** buf = {0x01,0x00,0x00,0x00,0x41}
example byte array(in little endian) : 0100000041
should give decoding like : a = 1, c = 'A'
样本数据可能非常大,样本结构(例如 testData)可以包含 200 - 3000 个字段。 如果我使用强制转换从 **buf 读取适当的数据并设置如下指针:
int a = *(reinterpret_cast<int*>(*buf);
*buf += 4;
char c = **buf;
*buf += 1;
如果需要解码的文件数量很高,我的 CPU 使用率会很高。示例:
struct testData
{
int element1;
char element2;
int element3;
... ...
... ...
short element200;
char element201;
char element202;
}
有没有办法减少 CPU 负载并保持解码速度非常快?
我有两个限制:
- “结构可以包含填充字节。”
- 我无法控制如何定义结构。结构也可以包含嵌套元素。
【问题讨论】:
标签: c++ performance cpu-usage