Re[25]: Об эффективности программ
От: Pavel Dvorkin Россия  
Дата: 20.10.05 10:44
Оценка: -1 :)
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Pavel Dvorkin, Вы писали:


WH> StringBuilder sb = new StringBuilder();

WH>...
WH> for (int i = 0; i < 100000; ++i)
WH> {
WH> sb.Length = 0;
WH> sb.Append(szFirstName);
WH> sb.Append(szLastName);
WH> }
WH>[/c#]
WH>0,04493758

WH>Оптимизированый вариант на C# получается на уровне С++ Ну чуть медленнее.


Проверять не буду, приму на веру. Все верно, я так и ожидал. Только одно имей в виду — StringBuilder постоянно хранит и изменяет поле длины. И это не бесплатно. Ты уже заплатил за вычисление этой длины вот здесь

string szFirstName = "11111111111111111111111111111111111111111111111111111111111111111111111111111";
string szLastName = "22222222222222222222222222222222222222222222222222222222222222222222222222222

(именно здесь, может, и нет, так как строки константые, но в других случаях — да)

Естественно, когда мы миллион раз одни и те же строки сцепляем, это не надо миллилн раз делать. А вот если строки все время разные, то вычисление их длины входит в плату за конкатенацию.

WH>Кстати для корректности теста перепиши свои на wchar_t.


А зачем ? Надо будет — перепишу. А пока мне и так хорошо — там, как я знаю, только 0-127. И незачем мне делать 50% оверхед. Я могу и не переписывать. А вот ты можешь на ASCII переписать ?
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.