Si prega di ignorare la leggibilità del codice in questa domanda.Il compilatore C# è abbastanza intelligente da ottimizzare questo codice?
In termini di prestazioni, qualora il seguente codice essere scritta in questo modo:
int maxResults = criteria.MaxResults;
if (maxResults > 0)
{
while (accounts.Count > maxResults)
accounts.RemoveAt(maxResults);
}
o come questo:
if (criteria.MaxResults > 0)
{
while (accounts.Count > criteria.MaxResults)
accounts.RemoveAt(criteria.MaxResults);
}
?
Edit: criteria
è un class
, e MaxResults
è una struttura intero semplice (vale a dire, public int MaxResults { get { return _maxResults; } }
Vuol il compilatore C# ossequio MaxResults
come una scatola nera e valutare ogni volta O è intelligente abbastanza da figura.? Ho ricevuto 3 chiamate alla stessa proprietà senza alcuna modifica di quella proprietà tra le chiamate?
Una delle leggi dell'ottimizzazione è il calcolo preliminare, quindi ho istintivamente scritto questo codice come primo elenco, ma sono curioso di sapere se questo genere di cose viene fatto per me a automaticamente (ancora, ignorare la leggibilità del codice).
(Nota: non sono interessato all'argomento "micro-ottimizzazione", che potrebbe essere valido nel caso specifico che ho postato. Vorrei solo una teoria dietro ciò che sta succedendo o non succedendo .)
Perché ti preoccupi anche del se all'esterno? se gli account sono array o raccolte, il conteggio non sarà mai inferiore a 0. E se non è mai inferiore a 0 a chi importa se MaxResults è inferiore a 0? (non verrà mai ripetuto) –
@Matthew: Si prega di non rimanere appesi alla logica, poiché (a) è scritto correttamente per la mia applicazione, e (b) non è quello che sto chiedendo in questa domanda. –
account.Take (maxResults) –