Хронометраж – насколько быстрее работает класс 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