string str1 = "12345ABC...\\...ABC100000";
// Hypothetically huge string of 100000 + Unicode Chars
str1 = str1.Replace("1", string.Empty);
str1 = str1.Replace("22", string.Empty);
str1 = str1.Replace("656", string.Empty);
str1 = str1.Replace("77ABC", string.Empty);
// ... this replace anti-pattern might happen with upto 50 consecutive lines of code.
str1 = str1.Replace("ABCDEFGHIJD", string.Empty);
Я унаследовал некоторый код, который делает то же самое, что и фрагмент выше. Он принимает огромную строку и заменяет (удаляет) константу меньших строк из большой строки.
Я считаю, что это очень интенсивный процесс памяти, учитывая, что новые большие неизменяемые строки выделяются в памяти для каждой замены, ожидая смерти через GC.
1. Каков самый быстрый способ замены этих значений, игнорируя проблемы памяти?
2. Каков наиболее эффективный способ памяти для достижения того же результата?
Я надеюсь, что это тот же ответ!
Также приветствуются практические решения, которые подходят где-то между этими целями.
Предположения:
- Все замены являются постоянными и известны заранее
- Базовые символы содержат некоторые символы unicode [non-ascii]