我不得不解碼一些字節數組(原始數據)。它可以由基本數據類型(int,unsigned int,char,short等)組成。根據定義的結構,我需要解釋它們。下面是示例:如何減少CPU使用量?
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使用率是相當高的,如果需要解碼的Fileds的數量都很高。例如:
struct testData
{
int element1;
char element2;
int element3;
... ...
... ...
short element200;
char element201;
char element202;
}
是否有降低CPU負荷,以及保持非常快速的解碼的方法嗎?
我有兩個限制:
- 「結構可以包含填充字節。」
- 我無法控制如何定義結構。結構也可以包含嵌套元素。
是不是讀取逐字節和移位操作將比使用強制轉換讀取多個字節慢? – learningstack 2012-02-22 04:05:22
@learningstack也許,也許不是。它可能取決於平臺。但我不必擔心,因爲我使用了好的編譯器,我不會對他們撒謊。對於編譯器來說,這個轉換關係到對齊並將其誘發爲產生錯誤的代碼。 – 2012-02-22 04:43:46