Пост, о котором я говорю, это this. Для меня не только первый работает быстрее (563 MS по сравнению с 630) при увеличении размера до 100000000, но и в прошлом, используя свойства в для циклов вызвало значительное замедление скорости.
Один раз при записи средства просмотра формы сигнала каждый кадр обрабатывался в среднем по 23 миллисекунды. Цикл for, который прошел через все пиксели изображения, стал причиной замедления. Вместо того, чтобы хранить ширину и высоту картинки перед циклом for, я получал к ней доступ во время каждой итерации. После его изменения время обработки одного кадра увеличилось с 23 миллисекунд до 3.
Кроме того, я сделал этот пример класса:
class LOL
{
private int x;
public LOL(int x)
{
this.x = x;
}
public int X
{
get
{
return x;
}
}
}
Затем я создал цикл for, который повторяется 500000000 раз. Один тест хранил X в целочисленной переменной еще до начала цикла, а другой обращался к свойству X во время каждой итерации. Первое заняло приблизительно 1500 миллисекунд, а второе около 8000.
Три теста, каждый из которых завершается тем, что предварительное сохранение предельного значения является оптимальным решением для повышения производительности. Я что-то пропустил? В настоящее время в моей программе требуется оптимизация, так как обрабатываются большие изображения, и во всех областях, критичных к производительности, я всегда сохраняю границы цикла перед рукой для повышения производительности, и эти тесты, кажется, подтверждают это.