Re[29]: Об эффективности программ
От: alexeiz  
Дата: 20.10.05 10:04
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, alexeiz, Вы писали:


A>>Здравствуйте, GlebZ, Вы писали:


GZ>>>Здравствуйте, alexeiz, Вы писали:


A>>>>Так не пойдет. Чтобы было эквивалентно С++ варианту нужно ещё из StringBuilder получить String.

GZ>>>Почему?

A>>В C++ версии на входе две строки на выходе одна. В C# — на выходе какой-то буфер (StringBuilder то есть). Чтобы его использовать как строку, нужно еще совершить преобразование.

GZ>Неа. На выходе один и тот же буфер содержащий строку. 100 байт стека. StringBuilder.ToString() — это не преобразование строки, а возврат буфера в виде строки. То есть все абсолютно аналогично.

Только с той разницей, что чтобы преобразовать буфер в строку в C, не нужно делать ничего. Например, нам надо передать строку после конкатенации в функцию foo(char*). В C — просто передаём этот самый буфер. В C# функция будет выглядеть как foo(string), и чтобы передать туда результирующую строку нам нужно сначала преобразовать StringBuffer в String.

GZ>Другой вопрос в Net с одним и тем же буфером создавать две строки нельзя. Поэтому аналогичным будет создание всегда новой строки.


В этом тесте используется конкретная возможность C — создание строк на стеке с прямой целью, чтобы показать приемущество этого языка по сравнению с C#.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.