Создание Windows-приложений на основе Visual C#

         

Подсчет времени выполнения задачи


Сравним теперь работу классов 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).


Содержание раздела