Подсчет времени выполнения задачи
Сравним теперь работу классов StringBuilder и String, используя точный счетчик времени выполнения задачи. Фактически вычисления производятся в тактах процессора, а потом переводятся в миллисекунды. Создайте новое консольное приложение и назовите его PrecisionCounter. Добавляем новый класс к проекту и называем его MechanismCounter. Полный листинг этого класса с комментариями:
Листинг 5.10.
(html, txt)
Итак, механизм счетчика готов. Запустим теперь две задачи: будем слагать строки, используя один раз String, а второй — StringBuilder:
Листинг 5.11.
(html, txt)
Как и следовало ожидать, использование класса StringBuilder значительно ускоряет работу (рис. 5.9).
Рис. 5.9. Результат работы приложения PrecisionCounter
На диске, прилагаемом к книге, вы найдете приложение PrecisionCounter (Code\Glava5\ PrecisionCounter).
Листинг 5.10.
Итак, механизм счетчика готов. Запустим теперь две задачи: будем слагать строки, используя один раз String, а второй — StringBuilder:
using System; using System.Text;
namespace PrecisionCounter {
class TestCounter { [STAThread] static void Main(string[] args) { Output("Запуск процесса подсчета времени выполнения сложения строк с использованием типа данных string"); MechanismCounter.Start(); string s = String.Empty; for(int i = 0; i < 10000; i++) { s+="TestPerfCounter"; } float timeString = MechanismCounter.Finish(); Output("Завершение процесса подсчета времени. Время выполнения (сек): " + timeString);
Output("Запуск процесса подсчета времени выполнения сложения строк с использованием типа данных StringBuilder"); MechanismCounter.Start(); StringBuilder sb = new StringBuilder(); for(int i = 0; i < 10000; i++) { sb.Append("TestCounter"); } float timeStringBuilder = MechanismCounter.Finish(); Output("Завершение процесса подсчета времени. Время выполнения (сек): " + timeStringBuilder); } /// <summary> /// Вывод на экран заданного значения. /// </summary> /// <param name="s">Значение.</param> static void Output(string s) { Console.WriteLine(s); } } }
Листинг 5.11.
Как и следовало ожидать, использование класса StringBuilder значительно ускоряет работу (рис. 5.9).
Рис. 5.9. Результат работы приложения PrecisionCounter
На диске, прилагаемом к книге, вы найдете приложение PrecisionCounter (Code\Glava5\ PrecisionCounter).