Продолжаем задачки по генерации всяких паттернов. Недавно мы генерировали массив, заполненный одним значением (копия). Теперь будем генерировать строку из одного символа, но нужной длины. Строку из случайных символов мы уже делали
Теперь будем делать строку-паттерн из одного заранее заданного символа.
Заведем три переменных:
int strlen = 100000; // длинна строки
string symbol = "a"; // символ заполнения
string Result = ""; // результирующая строка
Т.е. в цикле for, используя конструкцию s=s+"a"
:
for (int i = 0; i < strlen; i++) { Result = Result + symbol; }
StringBuilder sb = new StringBuilder(strlen); for (int i = 0; i < strlen; i++) { sb.Append(symbol); } Result = sb.ToString();
For + standart string concatenation: | 00:00:05.7493288 |
Test For + StringBuilder.Append: | 00:00:00.0030001 |
Даже на 10000 символов видна разница, здесь показана на 100000, а 500000 для for
я вообще не дождался.
Примечание: Тут мы делали строку заданной длины из одного паттерна, поэтому StringBuilder
был уместен, т.к. он напрямую работает с памятью, и не использует механизм .NET, которому нужно строку скопировать, а потом добавить символ. См. ссылку ниже.
Pingback: C#, добавление лидирующих нолей к строковому представлению числа. | Персональный блог Толика Панкова