일부 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,하지만 네. 그 대신에 그것을 사용한다는 의미라면, 답변으로 게시 하시겠습니까? (또는 에릭도 BitConverter를 최적화하고 싶습니까?) – Rup