En C#, los objetos siempre se crean con uno nuevo. Esto solo puede ser un inconveniente en cierta perspectiva. Por ejemplo, si crea un objeto dentro de un bucle (lo que significa que se crea un nuevo objeto para cada iteración en el bucle) puede ralentizar su programa.
for (int i = 0; i < 1000; ++i)
{
Object o = new Object();
//...
}
En lugar de crear una instancia fuera del ciclo. Objeto o = new Object();
Object o = new Object();
for (int i = 0; i < 1000; ++i)
{
//...
}
Sólo crear un objeto en un bucle si realmente tiene que ...
Tal vez hacer un poco de C++ le ayudará a entender la mecánica detrás y saber cuándo y dónde optimizar el código. Aunque C++ es un idioma diferente, hay muchas cosas que puede aplicar a otros lenguajes una vez que comprenda los conceptos básicos de administración de memoria (nuevo, eliminar, punteros, matrices dinámicas/matrices estáticas, etc.).
Lo que pasa con RenderPartial es * significativamente * más cierto en el modo de depuración que en el modo de lanzamiento. En modo de depuración, la sobrecarga es aplastante, ya que sondea para el ascx en cada iteración. En el modo de lanzamiento, esto se almacena en caché, por lo que generalmente no está nada mal. –