In C#, gli oggetti vengono sempre creati con il nuovo. Questo da solo può essere un inconveniente in una certa prospettiva. Ad esempio, se si crea un oggetto all'interno di un ciclo (ovvero viene creato un nuovo oggetto per ogni iterazione nel ciclo), è possibile rallentare il programma.
for (int i = 0; i < 1000; ++i)
{
Object o = new Object();
//...
}
Creare invece un'istanza al di fuori del ciclo. Oggetto o = nuovo oggetto();
Object o = new Object();
for (int i = 0; i < 1000; ++i)
{
//...
}
creare solo un oggetto in un ciclo se si hanno veramente a ...
Forse facendo un po 'di C++ potrebbe aiutare a capire i meccanismi dietro e sapere quando e dove per ottimizzare il codice. Anche se C++ è una lingua diversa, ci sono molte cose che puoi applicare ad altre lingue una volta compreso l'essenziale della gestione della memoria (nuovi, cancella, puntatori, array dinamici/array statici, ecc.).
La cosa su RenderPartial è * significativamente * più vera in modalità di debug rispetto alla modalità di rilascio. In modalità debug il sovraccarico è schiacciante, poiché sonda l'ascx ad ogni iterazione. Nella modalità di rilascio questo è memorizzato nella cache, quindi in genere non è affatto male. –