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

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

string data= "/temp string";

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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