Я работаю над высокопроизводительным кодом, в котором эта конструкция является частью критической секции производительности.
Вот что происходит в некоторой секции:
строка
"сканируется" и метаданные эффективно сохраняются. char[][][]
. char[][][]
должен быть передан в string[]
. Теперь я знаю, что можно просто вызвать new string(char[])
, но тогда результат придется копировать.
Чтобы избежать этого дополнительного шага копирования, я полагаю, что должна быть возможность записывать непосредственно во внутренний буфер строки. Даже если это будет небезопасная операция (и я знаю, что это влечет за собой множество последствий, таких как переполнение, прямая совместимость).
Я видел несколько способов достижения этой цели, но ни один из них меня не устраивает.
Есть ли у кого-нибудь верные предложения, как этого добиться?
Дополнительная информация:
Фактический процесс не включает преобразование в char[]
обязательно, это практически операция 'multi-substring'. Например, 3 индекса и их длины добавляются.
У StringBuilder
слишком много накладных расходов для небольшого количества конкатенаций.
EDIT:
Из-за некоторых неясных аспектов того, что именно я спрашиваю, позвольте мне переформулировать это.
Вот что происходит:
char[]
. char[]
преобразуется в string
. Я хотел бы объединить шаги 2 и 3, в результате чего получится:
string
(и GC может не лезть туда во время процесса, правильно используя ключевое слово fixed
?). И примечание: я не могу изменить тип вывода с string[], поскольку это внешняя библиотека, и проекты зависят от нее (обратная совместимость).