Как сравнить производительность методов сравнения строк в C#

В этом примере используется следующий код для создания четырех строк:

Затем он использует несколько методов для сравнения первой строки с другими. Например, для сравнения строк используется следующий код: ==.

В следующем фрагменте кода показаны операторы, которые программа использует для выполнения различных сравнений. Последние три метода выполняют нечувствительные к регистру сравнения. (Я объединил их всех в одном месте здесь. Они не все вместе в коде.)

Из результатов видно, что == дает самую быструю производительность, за которой следует .Equals. Метод String.Compare был намного медленнее.

Я думаю, что причина == настолько велика, что C# обрабатывает строки. Когда вы создаете строку в .NET, она интернирована и помещается в основной пул . Позже, если вы создадите еще одну строку, содержащую тот же текст, новая строка относится к тому же экземпляру в станем пуле. Это позволяет сравнительно быстро и легко сравнивать две строки.

Среди тестов без учета регистра, String.Equals дал самую быструю производительность. Преобразование тестовой строки в нижний регистр для каждой итерации было довольно медленным, однако, если вам нужно сравнить строку со многими другими значениями, и вы можете преобразовать тестовую строку в нижний регистр только один раз перед всеми тестами, то ToLower в основном преобразуется в случай ==, и производительность будет намного лучше. Если время выполнения - это всего лишь совокупность по большому количеству сравнений с разными тестовыми значениями, то эта техника не будет работать.

Источник: http://csharphelper.com/blog/2017/02/compare-the-performance-of-string-comparison-methods-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *