Sto analizzando un codice C#. Il metodo di seguito è uno dei più costosi. Ai fini di questa domanda, supponiamo che la micro-ottimizzazione sia la cosa giusta da fare. Esiste un approccio per migliorare le prestazioni di questo metodo?Ottimizza il frammento di codice C#
Modificare il parametro di input su p
su ulong[]
creerebbe una inefficienza della macro.
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;
}
}
Sembra BitConverter.ToInt64 - http://msdn.microsoft.com/en-us/library/system.bitconverter.toint64.aspx? –
Leggi e sposta alcuni byte - è onestamente costoso? Sono sicuro che lo chiamerai molto, ma sarei sorpreso se il compilatore potesse andare molto male con quello – Rup
@Alexei ToUInt64, ma si. Se volevi usarlo, invece, postalo come risposta? (Oppure Eric vuole ottimizzare anche BitConverter?) – Rup