В сценарии рендеринга я использую связанные указатели для итерации по большому изображению. Проблема заключается в производительности доступа к массиву.Ошибка использования указателя указателя стиля C++
...
for(int i=0; i < channels; i++) {
sum += (input[i*input_size]) * mulValue;
}
...
Например, когда input_size является 12288 он занимает 1,5 секунды, чтобы закончить сценарий, но когда это input_size 12280 это занимает ~ 0,5 секунды.
Что может вызвать такое тайное поведение?
Убедитесь, что вы не получаете доступ к нему за пределы. Кроме того, предпочитают функции rsGetElementAt_ * привязывать указатели. – sakridge
@sakridge Array слишком большой, но я не получаю доступ к нему вне диапазона. Может ли это быть результатом кэширования? – Vardan95
Может быть. Возможно, этот размер заставляет ваш алгоритм превышать один из уровней кеша. Другое дело, что более медленный размер больше согласован, что может вызвать больше конфликтов с банками, но разница в 3 раза кажется чрезмерной. Можете ли вы попробовать развертку кучи разных размеров? – sakridge