Если вы хотите быстро перемещать большие объемы данных, используйте Array.Copy
, а не цикл, который копирует отдельные символы.
Если вы переключаетесь в байтовый массив и используете Array.Copy
или Buffer.BlockCopy
Вы, вероятно, улучшите производительность немного больше (но если вам придется конвертировать в / из символьных массивов, вы можете потерять все, что получили).
(правка: Теперь, когда вы опубликовали пример кода):Если вы используете ссылки на строки массива, вы можете сместить ссылки, а не перемещать сами данные.Любое, что вы все еще можете сместить ссылки, используя Array.Copy)
Но если вы измените свой подход, чтобы вам не нужно было сдвигать данные, вы получите значительно лучшую производительность - вообще не выполняете работу, еслиВы можете избежать этого всегда быстрее!Скорее всего, вы можете обернуть данные в слой доступа, который отслеживает, сколько данных было смещено, и изменяет ваши индексы, чтобы вернуть данные, которые вы ищете.(Это немного замедлит доступ к данным, но спасет вас от смещения данных, поэтому может привести к чистому выигрышу - в зависимости от того, сколько у вас доступа по отношению к тому, сколько вы смещаете)