Мы работаем над приложением для обработки видео с использованием EmguCV и недавно должны были выполнить некоторую операцию с пиксельным уровнем. Сначала я написал петли, чтобы просмотреть все пиксели изображения следующим образом:
for (int j = 0; j < Img.Width; j++ )
{
for (int i = 0; i < Img.Height; i++)
{
// Pixel operation code
}
}
Время выполнения циклов было довольно плохим. Затем я опубликовал на форуме EmguCV и получил предложение переключить петли следующим образом:
for (int j = Img.Width; j-- > 0; )
{
for (int i = Img.Height; i-- > 0; )
{
// Pixel operation code
}
}
Я был очень удивлен, обнаружив, что код выполнен в половине времени!
Единственное, что я могу придумать, это сравнение, которое происходит в циклах, каждый раз обращается к свойству, которое ему больше не нужно. Это причина для ускорения? Или есть что-то еще? Я был в восторге от этого улучшения. И понравится, если кто-то сможет прояснить причину этого.