我正在分析一些C#代碼。下面的方法是最昂貴的方法之一。爲了這個問題的目的,假設微優化是正確的。有沒有一種方法來提高這種方法的性能?優化C#代碼片段
將輸入參數更改爲p
爲ulong[]
會造成宏觀效率低下。
static ulong Fetch64(byte[] p, int ofs = 0)
{
unchecked
{
ulong result = p[0 + ofs] +
((ulong) p[1 + ofs] << 8) +
((ulong) p[2 + ofs] << 16) +
((ulong) p[3 + ofs] << 24) +
((ulong) p[4 + ofs] << 32) +
((ulong) p[5 + ofs] << 40) +
((ulong) p[6 + ofs] << 48) +
((ulong) p[7 + ofs] << 56);
return result;
}
}
看起來像BitConverter.ToInt64 - http://msdn.microsoft.com/en-us/library/system.bitconverter.toint64.aspx? –
閱讀並移動幾個字節 - 是否真的很貴?我敢肯定,你打了很多電話,但是如果編譯器可能會在那個 – Rup
@Alexei ToUInt64上出錯,但是是的,我會感到驚訝。如果您的意思是使用它,請將其作爲答案發布? (或者Eric想要甚至優化BitConverter?) – Rup