TGViewer
C# Heppard C# Heppard @csharp_gepard · 1.65K subscribers
Post #90 2.21K
Поиск строки в массиве #скорость

В комментариях заметили интересное поведение при поиске строки в массиве. Если сделать Array.IndexOf по массиву строк, то скорость получается несколько ниже простого перебора в foreach со сравнением через Equals.

Было предположение, что проблема в EqualityComparer<string>.Default (который, на самом деле GenericEqualityComparer<string>), но и это оказалось не верным предположением. То есть проблема где-то в Array.IndexOf.

Оказалось верным подтвержденное бенчмарком предложение, что проблема в JIT:

Предполагаю, что в случае выделения цикла в отдельный метод, JIT оптимизатор находит какой-то паттерн применения и выполняет оптимизацию.



То есть если переписать метод особым образом, то скорость будет норм. Предположение основано на статье, описывающей оптимизации в JIT.

Бенчмарк в комментах. Бенчмарк с предположением там же. Коллеги, также, написали репорт о проблемах с производительностью.
  • 👍 13
  • 🤯 2
More from @csharp_gepard
  1. Mar 13, 2026Ozon Tech Community .NET Meetup 24 марта, лофт Casa Picassa, 19:00 Ищем способы бороться с…
  2. Jan 20, 2026Ещё одна история про память #отдых Судя по комментариям специалистов и ценам на RAM в мага…
  3. Nov 25, 2025FastEnum #скорость Иногда нам нужно не просто быстро, а очень быстро. В этот момент в дело…
  4. Nov 20, 2025UnsafeAccessor #скорость Иногда возникает странное желание изменять приватные поля в класс…
  5. Nov 17, 2025Latency numbers every programmer should know Я всё время теряю эти циферки, особенно когда…
  6. Oct 29, 2025Dictionary.TryGetValue #скорость Уж сколько лет прошло и, вроде, все это знают. Но, тем не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →