【发布时间】: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