String.Replace (char, char) или Replace (string, string)? - PullRequest
11 голосов
/ 03 февраля 2012

Есть ли разница в производительности между String.Replace (char, char) и String.Replace (string, string), когда мне просто нужно заменить один символ другим?

Ответы [ 3 ]

10 голосов
/ 03 февраля 2012

Да, есть: я провел быстрый эксперимент, и похоже, что строковая версия примерно в 3 раза медленнее.Удивительно, потому что перегрузка со строками нуждается в дополнительном цикле для прохождения всех символов oldString.Этот цикл выполняется ровно один раз, но накладные расходы все еще там.

5 голосов
/ 03 февраля 2012

Я бы ожидал, что string.Replace(char, char) потенциально будет быстрее, так как он может выделять точно необходимое количество места.Я сомневаюсь, что это существенно изменит производительность во многих реальных приложениях.

Что еще более важно, я бы сказал, что это более читабельно - понятно, что вы действительно получите строку одинаковой длины..

3 голосов
/ 03 февраля 2012

String.Replace(char, char) быстрее.Причина проста:

  • При замене символа не требуется выделять строку другого размера, при замене строки необходимо сначала узнать новый размер или использовать StringBuilder для замены
  • При замене символа не нужно проверять диапазон строк.Представьте, что у вас есть строка типа ABCACABCAC, и вы хотите заменить ABC.Вам нужно выяснить, совпадают ли 3 символа, при работе с ними нужно найти только один символ.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...