У меня есть список, который имеет 150K элементов.Среднее время работы IndexOf () в 4 раза ниже, чем Contains ().Я пытался использовать список Int.Для списка строк IndexOf немного быстрее.
Я нашел только одно основное отличие, это атрибут TargetedPatchingOptOut.MSDN сообщает:
Указывает, что метод библиотеки классов .NET Framework, к которому применяется этот атрибут, вряд ли будет зависеть от обслуживания выпусков и, следовательно, может быть встроен в Native Image Generator (NGen).images.
Может ли этот атрибут быть причиной такого поведения?И почему метод Contains () не имеет такого атрибута?
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Iиметь код примерно так:
List<int> list = CommonHelper.GetRandomList(size);
long min = long.MaxValue;
long max = 0;
long sum = 0;
foreach (var i in list)
{
m_stopwatch.Reset();
m_stopwatch.Start();
list.Contains(i); // list.IndexOf(i);
m_stopwatch.Stop();
long ticks = m_stopwatch.ElapsedTicks;
if (ticks < min)
min = ticks;
if (ticks > max)
max = ticks;
sum += ticks;
}
long averageSum = sum / size;
РЕДАКТИРОВАТЬ 2:
Я написал тот же код, что и в IndexOf (), и он работает медленнеечем содержит ().