Самый быстрый способ удалить первый символ в Строке

Скажите, что у нас есть следующая строка

string data= "/temp string";

Если мы хотим удалить первый символ / мы можем сделать большим количеством путей, таких как:

data.Remove(0,1);
data.TrimStart('/');
data.Substring(1);

Но, действительно я не знаю, какой имеет лучший алгоритм и выполнение этого быстрее..
Существует ли тот, который является лучшим, или все - то же?

186
задан Tiago Mussi 8 August 2018 в 22:31
поделиться

3 ответа

Второй вариант на самом деле не такой, как другие - если строка "/// foo", она станет "foo" вместо "// foo".

Для понимания первого варианта требуется немного больше работы, чем для третьего - я бы рассматривал параметр Подстрока как наиболее распространенный и читаемый.

(Очевидно, что каждый из них как отдельный оператор не сделает ничего полезного - вам нужно будет присвоить результат переменной, возможно, data непосредственно.)

Я бы не стал производительность во внимание здесь, если это на самом деле не становится проблемой для вас - и в этом случае единственный способ, который вы узнаете, - это иметь тестовые примеры, а затем легко просто запустить эти тестовые примеры для каждого варианта и сравнить результаты. Я ожидал, что Substring , вероятно, будет здесь самым быстрым, просто потому что Substring всегда заканчивается созданием строки из единственного фрагмента исходного ввода, тогда как Remove должен как минимум потенциально склеить начальный и конечный фрагменты.

135
ответ дан 23 November 2019 в 05:50
поделиться

Я предполагаю, что Remove и Substring будут иметь первое место, так как они оба поглощают часть строки фиксированного размера, тогда как TrimStart выполняет сканирование слева с проверкой каждого символа, а затем должен выполнять ту же работу, что и два других метода. А если серьезно, то это просто косяк.

9
ответ дан 23 November 2019 в 05:50
поделиться

Вы могли бы профилировать это, если бы вам действительно было интересно. Напишите цикл из множества итераций и посмотрите, что получится. Однако есть вероятность, что это не узкое место в вашем приложении, и TrimStart кажется наиболее семантически правильным. Перед оптимизацией постарайтесь написать читабельный код.

6
ответ дан 23 November 2019 в 05:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: