2016-06-02 2 views
-2

Я возвращаю строку из API, длина которой составляет 45 символов. Существует одно слово, уникальное для одного условия, которое не появляется в другом условии.string.contains() vs string.equals() или string == performance

Мне интересно, использует ли string.contains() более высокую производительность, чем сравнение всей строки с string.equals() или string == "blah blah".

Я не знаю внутренней работы любого из этих методов, но логически кажется, что contains() должен быть быстрее, потому что он может остановить перемещение строки после того, как она найдет совпадение. Это точно? Кстати, слово, которое я хочу проверить, - это первое слово в строке.

+7

«Содержит» и «Равные» не эквивалентны и не взаимозаменяемы. –

+4

«Слово, которое я хочу проверить, это первое слово в строке» - звучит так, будто вы хотите «StartsWith», верно? –

+2

У вас действительно проблема с производительностью? Я спрашиваю, потому что это почти всегда над оптимизацией. Учитывая, что это вызов API, мне даже не важно, какой из них наиболее эффективен *. (Но мне все равно, что функционально правильно) –

ответ

2

Я согласен с D Stanley (комментарий). Вы должны использовать String.StartsWith()

Тем не менее, я также не знаю внутренней работы каждого метода, но я вижу вашу логику. Однако «String.Contains()» может по-прежнему загружать всю строку перед ее обработкой, и в этом случае разница в производительности будет очень малой.

В качестве конечной точки, длина строки которой составляет всего 45 символов, разница в производительности должна быть очень малой. Я был шокирован, когда написал junky метод для замены символов и обнаружил, что это процессы ~ 10kb текста в доли секунды. Поэтому, если вы не делаете какую-то безумную работу, еще более мудрую в своем приложении, это не имеет большого значения.

+0

Пойду с startswith(). Спасибо Кайл. –

+0

Нет проблем. Но кредит для @D Стэнли для этого момента. :) –

+0

yup, я поддержал его комментарий :) –