пятница, 23 июля 2010 г.

VB.Net. Сравнение быстродействия операций

Приблизительно оценить время выполнения той или иной операции можно следующим образом:

Dim t As DateTime = Now
'некоторая операция 
Console.WriteLine((Now - t).ToString)

Причем, если операция выполняется быстро, имеет смысл поместить ее в цикл. В качестве примера, оценим разницу в быстродействии вариантов проверки пустой строки. Для пущего интересу, пусть строковая переменная будет пустая и непустая.

Dim s As String = "a"
Dim t As DateTime

Console.WriteLine("s = ""a""")

t = Now
For i = 0 To 99999999
    If s = "" Then s.ToString()
Next
Console.WriteLine("If s = """" Then --> " & (Now - t).ToString)

t = Now
For i = 0 To 99999999
    If s = String.Empty Then s.ToString()
Next
Console.WriteLine("If s = String.Empty Then --> " & (Now - t).ToString)

t = Now
For i = 0 To 99999999
    If s.Length = 0 Then s.ToString()
Next
Console.WriteLine("If s.Length = 0 Then --> " & (Now - t).ToString)

s = ""
Console.WriteLine("s = """"")

t = Now
For i = 0 To 99999999
    If s = "" Then s.ToString()
Next
Console.WriteLine("If s = """" Then --> " & (Now - t).ToString)

t = Now
For i = 0 To 99999999
    If s = String.Empty Then s.ToString()
Next
Console.WriteLine("If s = String.Empty Then --> " & (Now - t).ToString)

t = Now
For i = 0 To 99999999
    If s.Length = 0 Then s.ToString()
Next
Console.WriteLine("If s.Length = 0 Then --> " & (Now - t).ToString)

А вот и результаты испытаний, выведенные в консоль:

s = "a"
If s = "" Then --> 00:00:02.2656250
If s = String.Empty Then --> 00:00:02.3125000
If s.Length = 0 Then --> 00:00:00.4062500
s = ""
If s = "" Then --> 00:00:00.7968750
If s = String.Empty Then --> 00:00:02.2187500
If s.Length = 0 Then --> 00:00:00.5000000


Как видим, в любом случае, целесообразнее обращаться к свойству Length. 

Комментариев нет:

Отправить комментарий

Го вверх!