在SQL连接中,.Net Core是否比.Net Framework慢得多?

时间:2019-04-20 07:06:47

标签: .net .net-core ado.net .net-framework-version sqlclient

在.NET Core中运行代码以连接到SQL Server数据库似乎比在完整的.NET Framework中慢得多。是这样吗还是我做错了什么?

我的PC上装有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.2ms
  • .NET Core的平均运行时间: 36.7ms

是我错了还是.NET Core比.NET Framework慢得多?

0 个答案:

没有答案