Estoy creando un código C#. El siguiente método es uno de los más caros. Para el propósito de esta pregunta, suponga que la micro-optimización es lo correcto. ¿Existe un enfoque para mejorar el rendimiento de este método?Optimizar C# Code Fragment
Cambiar el parámetro de entrada a p
a crearía una macro ineficiencia.
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;
}
}
Parece que BitConverter.ToInt64 - http://msdn.microsoft.com/en-us/library/system.bitconverter.toint64.aspx? –
Lee y cambia algunos bytes. ¿Es sinceramente costoso? Estoy seguro de que lo está llamando mucho, pero me sorprendería si el compilador pudiera ir muy mal con ese – Rup
@Alexei ToUInt64, pero sí. Si te refieres a usar eso en su lugar, publícalo como respuesta. (¿O quiere Eric optimizar BitConverter incluso?) – Rup