Выполнение кода в .NET Core для подключения к базе данных SQL Server выглядит намного медленнее, чем в полной версии .NET Framework. Это тот случай? Или я что-то не так делаю?
У меня SQL Server 2017 на моем ПК, и я хочу запустить простую хранимую процедуру, такую как
CREATE PROCEDURE OneRowSelect
AS
BEGIN
SELECT 1
END
GO
Я использую SQL Client 4.6.0 для подключения к базе данных и получаю результат этой процедуры в своем коде. Поэтому я написал библиотеку .Net Standard 2.0, которая предоставляет этот код:
private const string connectionString = @"data source=.;initial catalog=TestDB;Integrated Security=SSPI;";
private const string command = @"OneRowSelect";
public static async System.Threading.Tasks.Task Execute()
{
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(command, con)
{
CommandType = CommandType.StoredProcedure
})
{
con.Open();
var data = await cmd.ExecuteReaderAsync();
while (data.Read())
{
var res = data[0];
}
}
}
}
Наконец, я написал два проекта в .NET Core 2.2 и .NET Framework 4.7.2 и сослался на эту библиотеку .NET Standard в этих двух проектах и зарегистрировал время выполнения функции Execute
с помощью Stopwatch
.
Мой код в этих двух проектах:
Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = 0; i < repeat; i++)
await Runner.Execute();
stopwatch.Stop();
Результат был невероятным. .NET Core намного медленнее, чем .NET Framework в моей системе. Результаты:
- .NET Framework среднее время работы: 2,2 мс
- .NET Core среднее время работы: 36,7 мс
Я ошибаюсь или .NET Core намного медленнее, чем .NET Framework?