2013-03-07 122 views
1

我是LINQ的新手,因此开始探索我创建了一个多线程的时间应用程序,以查看LINQ或ADO的更快速度。这个应用程序计数我有多久工作,直到回家的时间。定时器设置为1秒,调用相同的SP。LINQ比ADO更快吗?

我错过了什么吗?

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 
+0

我不认为LINQ意味着更快,它只是意味着更简单。 – 2013-03-07 19:43:13

+1

您错过了几件事:1)速度通常不是唯一的标准。 2)你没有比较“linq”,而是比较“LINQ to SQL”,它不是唯一的LINQ提供者。 – 2013-03-07 19:43:38

+0

LINQ <>数据库。 Linq代表语言集成查询。它是一种sql语法,添加到VB和C#中,但决不是数据库相关的,因为您可以将它与数组或其他数据库无关的集合一起使用。 – 2013-03-08 15:46:28

回答

2

LINQ to SQL使用下面的ADO.NET,所以它没有办法可以更快。

你可以问,为什么人们使用它,当它有更糟糕的表现?因为在某些情况下,表现并不那么重要。而且你必须要管理员,LINQ to SQL更容易使用!并且因为这个开发过程可以更快速,更轻松地以更开发友好的方式完成。

+1

嗨,在这个实验中,LINQ比ADO好3毫秒:)不知道这很容易,花了我2​​小时来弄清楚如何让它工作:( – 2013-03-07 19:49:52

+0

linq到sql之间的任何差异,以及直接ado.net调用可能是由于生成/缓存结果查询 – JerKimball 2013-03-07 20:18:10