【问题标题】:Is LINQ faster than ADO?LINQ 比 ADO 快吗?
【发布时间】:2013-03-07 19:41:25
【问题描述】:

我是 LINQ 的新手,因此为了开始探索,我创建了一个多线程时间应用程序,以了解 LINQ 或 ADO 哪个更快。这个应用程序计算我在回家之前工作了多长时间。定时器设置为 1 秒,调用同一个 SP。

我错过了什么吗?

Imports System.Data.SqlClient
Imports System.Threading

Public Class Time

Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    lblADOTime.Text = ADO()
    lblTime.Text = Net()
    lblLinq.Text = tLinq()

End Sub

Private Sub Time_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim tADO As Thread
    Dim tNet As Thread
    Dim tLinq As Thread
    tADO = New Thread(AddressOf Me.ADO)
    tADO.Start()
    tNet = New Thread(AddressOf Me.Net)
    tNet.Start()
    tLinq = New Thread(AddressOf Me.tLinq)
    tLinq.Start()
End Sub
Private Function tLinq() As String
    Dim db As New DataClasses1DataContext
    'db.Connection.Open()

    Dim myDate As String
    myDate = Date.Today + " 17:00:00"
    Return "LINQ: " + db.TimeLeftToday(myDate).ToList().Last.Column1

    'db.Connection.Close()

End Function
Private Function Net() As String
    Dim a As DateTime
    a = Date.Today + " 17:00:00"
    Dim s As String
    s = (a - Now()).ToString
    Return ".NET: " + s 's.Substring(1, 8)

End Function

Private Function ADO() As String
    Try
        Dim conn As New SqlConnection()
        conn.ConnectionString = meh

        Dim cmd As New SqlCommand("TimeLeftToday", conn)

        cmd.CommandText = "TimeLeftToday"
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add(New SqlParameter("@Today", SqlDbType.DateTime, 0, "@Today"))
        cmd.Parameters(0).Value = Date.Today + " 17:00:00"
        cmd.Connection = conn
        conn.Open()
        Dim sdr As SqlDataReader = cmd.ExecuteReader()
        sdr.Read()
        If sdr.HasRows Then

            Return "ADO: " + sdr.GetValue(0)

        End If
        conn.Close()
    Catch ex As Exception
        MsgBox(ex.Message)



    End Try

End Function

End Class

【问题讨论】:

  • 我不认为 LINQ 意味着更快,它只是意味着更简单。
  • 您缺少一些东西:1) 速度通常不是唯一的标准。 2)您不是在与“linq”进行比较,而是在与“LINQ to SQL”进行比较,这不是唯一的 LINQ 提供程序。
  • LINQ 数据库。 Linq 代表语言集成查询。它是一种添加到 VB 和 C# 中的类似 sql 的语法,但它与数据库无关,因为您可以将它与数组或其他不涉及数据库的集合一起使用。

标签: vb.net performance linq ado.net


【解决方案1】:

LINQ to SQL 在底层使用 ADO.NET,所以它不可能更快。

您可能会问,为什么人们使用它,当它的性能更差时?因为在某些情况下,性能并不是那么重要。而且你必须管理,LINQ to SQL 更容易使用!也正因为如此,开发过程可以更快、更容易且对开发人员更友好。

【讨论】:

  • 嗨,在这个实验中,LINQ 的性能比 ADO 快 3 毫秒 :) 不知道这很容易,我花了大约 2 个小时才弄清楚如何让它工作:(
  • 您在 linq to sql 和直接 ado.net 调用之间看到的任何差异都可能是由于生成/缓存结果查询造成的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 2015-01-04
相关资源
最近更新 更多