Mentre rispondevo a una domanda dell'SO, mi è stato detto che la mia soluzione introdurrebbe una chiusura sulla variabile, quindi avrebbe prestazioni leggermente peggiori. Quindi la mia domanda è:"La chiusura su variabile offre prestazioni leggermente peggiori". Come?
- Come ci sarà una chiusura?
- In che modo influisce sulle prestazioni?
Ecco la question
List.Where(s => s.ValidDate.Date == DateTime.Today.Year).ToList();
Ecco il mio solution. Ho introdotto la variabile yr
per l'anno di archiviazione.
int yr = DateTime.Now.Year;
List.Where(s => s.ValidDate.Year == yr).ToList();
Qui è nella risposta è comments
Questi due frammenti di codice hanno una semantica diversa. Se viene eseguito durante la notte di capodanno e l'anno cambia tra le varie operazioni, si ottengono risultati diversi. E alla fine - presumo - usare il codice di chiusura sarà più veloce, dal momento che non devi creare nuove istanze di 'DateTime' con ogni iterazione del ciclo e non devi accedere a due proprietà aggiuntive (che introducono un altro livello di indirezione). – knittl
@knittl nella domanda originale è stato menzionato nei commenti. Ma dove viene introdotta la chiusura? – Sascha
Beh, onestamente, la soluzione con la chiusura non dovrebbe essere più veloce? (Funziona in modo diverso -> come i 2 non sono equivalenti). Ma semmai dovrebbe essere più veloce? –