我們正在做一些性能優化我們的項目,並與我來到了以下方法探查:加快字節解析的可能性?
private int CalculateAdcValues(byte lowIndex)
{
byte middleIndex = (byte)(lowIndex + 1);
byte highIndex = (byte)(lowIndex + 2);
// samples is a byte[]
retrun (int)((int)(samples[highIndex] << 24)
+ (int)(samples[middleIndex] << 16) + (int)(samples[lowIndex] << 8));
}
這種方法已經相當快,每執行〜1μs的,但它被稱爲每秒〜100.000倍所以它佔用CPU的10%左右。
有沒有人有一個想法如何進一步改進這種方法?
編輯:
目前的解決方案:
fixed (byte* p = samples)
{
for (; loopIndex < 61; loopIndex += 3)
{
adcValues[k++] = *((int*)(p + loopIndex)) << 8;
}
}
這需要時間< 40%,那麼之前(每次通話 「全法」 採取了〜爲35μs前後〜爲13μs現在) 。該for
-loop actualy需要更多的時間則calcualtion現在...
爲什麼強制類型'byte'?你需要減少指數mod 256嗎?由於移位已將值擴展爲「int」,所以對「int」的強制轉換是無用的。 – CodesInChaos