return -1;
}
return Mapping[index].Index;
Делаю
fixed (MappingEntry* p = Mapping)
{
if ((*(p + index)).Value != x)
{
return -1;
}
return (*(p + index)).Index;
}
и это работает на полнаносекунды медленнее
Через промежуточную переменную?
Не понял, поясни, плиз
var tmp = Mapping[index]
Медленнее работает. Мне без копирования нужно сравнить поле из структуры, которая в массиве. Зачем мне копировать ее на стек?
а если индекс формировать не дважды, а во временную переменную? оно, конечно, может быть оптимизировано, но лучше проверить.
Если там у тебя именно массив, то можешь сделать var tmp = ref Mapping[index]
Я сомневаюсь что оно будет скорректировано именно в стек. Если структура мелкая, то наверняка осядет в стеке.
вот это здравая мысль, ща попробую. Но вопрос остается - почему баундчек не убирается?
Баундчек на индекс?
напиши где нить наверху var mapping = Mapping; var i = index; и дальше свой код. у тебя Mapping — поле (а может и index тоже), оно может поменяться, поэтому баунд чеков 2
Это помогло срезать 0.1 наносекунды
Обсуждают сегодня