Иллюстрированный самоучитель по Visual Basic .NET

Хронометраж – насколько быстрее работает класс StringBuilder?

Хотя Microsoft не разрешает публиковать точные результаты хронометража для бета-версий (и это вполне разумно, поскольку в них содержится большой объем отладочного кода), отношение результатов, полученных в ходе измерений, почти всегда остается более или менее постоянным. Иногда в окончательной версии это отношение слегка изменяется, но в гораздо меньшей степени, чем абсолютные значения показателей.

Хронометраж в VB.NET реализуется легко – достаточно объединить метод Now с методом Ticks класса DateTime. Как подсказывает само название, метод Now возвращает текущие показания системных часов. Метод Ticks возвращает число типа Long, равное количеству 100-наносекундных интервалов, прошедших с 00:00 1 января 0001 года (1 наносекунда = 1/1 000 000 000 секунды).

Следующая программа использовалась для оценки того, насколько быстрее класс StringBuilder выполняет присоединение символов в конец строки по сравнению с классом String. Выигрыш растет с увеличением количества символов; при 50 000 символов эффективность возрастала более чем в 800 раз!

Option Strict On Module Modulel
Sub Main()
Dim i As Integer
Dim StartTime As New DateTime()
Dim EndTime As New DateTime()
StartTime =DateTime.Now()
Dim theText As New System.Text.SthngBuilder()
For i =1 To 50000
theText =theText.Append("A")
Next
EndTime =DateTime.Now
Dim answerl,answer2 As Long
' Количество 100-наносекундных интервалов
answer1 =EndTi me.Ticks()-StartTime.Ticks()
StartTime =DateTime.Now()
Dim aString As String
For i =1 To 50000
aString =aString & "A"
Next
EndTime =DateTime.Now
' Количество 100-наносекундных интервалов
answer2 =(EndTime.Ticks()-StartTime.Ticks())
Console.WriteLine("StringBuilder was " & _ answer? /answerl & "times faster.")
Console.ReadLine()
End Sub
End Module
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.