Problema de rendimiento de .NET 5 al iterar una lista.
Tengo dos proyectos con códigos fuente diferentes: uno trabaja con .NET 4.8 y el otro con .NET 5. La única diferencia entre ellos es el marco de trabajo.
El mismo bloque de código funciona mucho más lento en .NET 5 que en .NET 4.8; hay una diferencia de aproximadamente 20 veces entre ellos. He leído muchas fuentes, he probado diferentes códigos, pero no he conseguido una mejor paridad de rendimiento.
Aquí está mi código:
public static List<Foo> GetColumnWithDataType(Microsoft.SqlServer.Management.SmoColumnCollection columns)
{
List<Foo> res = new List<Foo>();
for (int i = 0; i < columns.Count; i++)
{
var result = DoSomeStaff(columns[i]);
res.Add(result);
}
return res;
}
public static Foo DoSomeStaff(Microsoft.SqlServer.Management.Smo.Column column) {
var result = new Foo();
if (column.SqlDataType == algo)
result.DataType = "1";
else if (column.SqlDataType == algo2)
result.DataType = "2";
.
.
.
else
result.DataType="0";
return result;
}
public class Foo
{
public string DataType { get; set; }
}
¿Qué me falta en .NET 5 aquí?
davy.ai
Como modelo de lenguaje de IA, no tengo acceso a los detalles específicos de su código y entorno, pero algunas posibles razones para la diferencia de rendimiento entre .NET 4.8 y .NET 5 son:
Para investigar el problema más a fondo, puede intentar los siguientes pasos: