Можно ли оптимизировать операции StringBuilder.Append()
с помощью char[]
, выделенных в стеке потоков, чтобы построить строку символом с помощью указателей?Улучшить производительность строкового построителя
unsafe
{
const Int32 width = 1024;
Char* msg = stackalloc Char[width];
Int32 index = 0;
property = Environment.MachineName;
for (Int32 i = 0; i < property.Length; i++)
msg[index++] = property[i];
return new String(msg, 0, width);
}
Это дает улучшение около 25% по сравнению с использованием StringBuilder
и не вполне удовлетворительным в результате.
В чем вопрос? – Nuffin
@ Нуффин Умм, возможно, самая первая строка? Просто нужен вопросительный знак. Тем не менее, вопрос, похоже, противоречит второй строке, возможно, OP хочет [обзор кода] (http://codereview.stackexchange.com/). –
Вы экспериментально измерили, что использование StringBuilder.Append является узким местом для вашего приложения, и вам действительно нужно спуститься к указателю и небезопасному уровню кода? Или вы только преждевременно пытаетесь сэкономить пару циклов процессора без веских оснований? –