Является ли .Net Core намного медленнее, чем .Net Framework в соединении SQL? - PullRequest
1 голос
/ 20 апреля 2019

Выполнение кода в .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?

...