КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Class StringWriterAppend
Class StringBuilderAppend Class StringAppened { const int iIterations = 10000; public static void Main() { DateTirae dt = DateTime.Now; string str = String. for (int i = 0; i < iIterations; i++) str +="abcclefghijkimnopqrstuvwxyz\r\n"; Console. WriteLine(DateTime. Now - tft); В этой программе для измерения времени выполнения в начале и конце работы вызывается метод Now класса DateTime. Время выводится в часах, минутах, секундах и сотнях наносекунд. Выполнение каждой операции присоединения строк приводит к появлению нового объекта String. что в свою очередь требует выделения памяти. Каждая предшествующая строка помечается как доступная для сборки мусора. Скорость работы этой программы зависит от скорости компьютера, обычно это длится около 1 минуты. Более удачным решением в нашем случае будет использование класса StringBuilder, определенного в пространстве имен Svstem.Text. В отличие от строк, хранящихся в объектах класса String class, строки в объектах класса StringBuilder могут изменяться. Класс StringBuilder динамически перераспределяет память, используемую строкой. Как только размер строки превышает размер буфера, объем буфера вырастает вдвое. Для преобразования объекта StringBuilder в объект String служит метод ToString. Вот переработанный вариант программы, где применяется StringBuilder. using System; using System.Text; { const tut iIterations = 10000; public static void Main() { DateTime dt = DateTime.Now; StringBuilder sb = new StringBuilder(); for (int i = 0; i < iIterations; i++) sb.Append("abcdefghijklnrnopqrstuvwxyz\r\n"); string str = sb.ToString(); Console.WriteLine(DateTime. Now - dt); Время выполнения этой программы — менее секунды. Похоже, что она работает в 1 000 раз быстрее своей предшественницы. Другой эффективный способ заключается в использовании класса StringWnter. определенного в пространстве имен System JO. Т акие классы, как StringWriter и StreamWriter (используемые для записи текстовых файлов), являются производными от абстрактного класса TextWrifer. Как и StringBuilder, класс StringWnter соединяет1 строки. Его большое преимущество — возможность использования целого арсенала методов Write и WriteLine, определенных в классе TextWriter. Вот пример программы, выполняющей ту же задачу, что и две предыдущие, но использующей объект StringWnter. using System; using System.10; { const int iIterations = 10000; public static void Main() DateTime dt = DateTime,Now; StringWriter sw = new StringWriter(); for (int i = 0; i < iIterations; i++) sw.WriteLine(“abcdefghijklirmopqrstuvwxyz”); string str = sw.ToString(); Console,WriteLine(DateTime.Now - dt}; Скорость работы этой программы сравнима со скоростью StringBuilderAppend. Операционные системы, языки программирования, библиотеки классов и разнообразные инфраструктуры обеспечивают все увеличивающийся уровень абстракции, и иногда мы. программисты, теряем понимание механизмов, лежащих ниже этого уровня абстракции. То, что в коде может выглядеть как простое сложение, реально может быть связано с множеством операций более низкого уровня.
Дата добавления: 2014-01-05; Просмотров: 307; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |