tgoop.com/csharp_gepard/90
Create:
Last Update:
Last Update:
Поиск строки в массиве #скорость
В комментариях заметили интересное поведение при поиске строки в массиве. Если сделать Array.IndexOf
по массиву строк, то скорость получается несколько ниже простого перебора в foreach
со сравнением через Equals
.
Было предположение, что проблема в EqualityComparer<string>.Default
(который, на самом деле GenericEqualityComparer<string>), но и это оказалось не верным предположением. То есть проблема где-то в Array.IndexOf
.
Оказалось верным подтвержденное бенчмарком предложение, что проблема в JIT:
Предполагаю, что в случае выделения цикла в отдельный метод, JIT оптимизатор находит какой-то паттерн применения и выполняет оптимизацию.
То есть если переписать метод особым образом, то скорость будет норм. Предположение основано на статье, описывающей оптимизации в JIT.
Бенчмарк в комментах. Бенчмарк с предположением там же. Коллеги, также, написали репорт о проблемах с производительностью.
BY C# Heppard

Share with your friend now:
tgoop.com/csharp_gepard/90