Форум: "Прочее";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
Внизоптимизация Найти похожие ветки
← →
Scott Storch (2011-05-11 11:48) [0]Стоит ли выноить aFirstLink + aLinkCount - 1 в отдельную переменную, чтобы каждый раз не высчитывалось?
for I := aFirstLink to aFirstLink + aLinkCount - 1 do
begin
<...>
end;
← →
KSergey © (2011-05-11 11:57) [1]В дельфи границы цикла For вычисляются только 1 раз, потом используются ранее вычисленные готовые значение.
В этом есть прикольный подвох.
Но это документировано
← →
Scott Storch (2011-05-11 12:13) [2]Спасибо.
еще для уточнения, если я в этом цикле отрисовываю текст, параметр Y функции TextOut на каждой итерации у меня высчитывается, параметр X - всегда постоянный, имеет ли смысл вынести его перед циклом.
Canvas.TextOut(Rect.Left + list_images.Width + LEFT_RIGHT_INDENT * 2, Y, S);
← →
clickmaker © (2011-05-11 12:14) [3]> параметр X - всегда постоянный, имеет ли смысл вынести его
> перед циклом
имеет, конечно
← →
Jeer © (2011-05-11 12:16) [4]
> имеет ли смысл вынести его перед циклом.
Это очевидно.
← →
KSergey © (2011-05-11 12:27) [5]> Scott Storch (11.05.11 12:13) [2]
> параметр X - всегда постоянный, имеет ли смысл вынести его перед циклом.
Оптимизация от этого будет копеечная в сравнении с прочим.
Но! гораздо важнее этого то, что код с отдельно вынесенной переменной будет гораздо более читабелен и проще в сопровождении.
← →
Ega23 © (2011-05-11 12:53) [6]
> имеет ли смысл вынести его перед циклом.
>Canvas.TextOut(Rect.Left + list_images.Width + LEFT_RIGHT_INDENT
* 2, Y, S);
Более того, имеет смысл заранее вычислитьRect.Left + list_images.Width
> Оптимизация от этого будет копеечная в сравнении с прочим.
Смотря сколько раз этот код вызывается.
← →
RWolf © (2011-05-11 13:20) [7]
> Смотря сколько раз этот код вызывается.
в любом случае, по сравнению c вызовом Canvas.TextOut — копейки.
← →
clickmaker © (2011-05-11 13:24) [8]> по сравнению c вызовом Canvas.TextOut — копейки
по копеечке рубль набежит
← →
RWolf © (2011-05-11 13:28) [9]
> clickmaker © (11.05.11 13:24) [8]
ну вот сколько времени займёт вытащить два поля из кэша и сложить их — по сравнению с отрисовкой текста на канвасе? сомневаюсь, что эффект от оптимизации этого сложения можно вообще достоверно обнаружить.
← →
clickmaker © (2011-05-11 13:32) [10]> сомневаюсь, что эффект от оптимизации этого сложения можно
> вообще достоверно обнаружить
если можно избавиться от лишних телодвижений - нужно избавляться
← →
Ega23 © (2011-05-11 13:39) [11]
> ну вот сколько времени займёт вытащить два поля из кэша
> и сложить их — по сравнению с отрисовкой текста на канвасе?
> сомневаюсь, что эффект от оптимизации этого сложения можно
> вообще достоверно обнаружить.
С одной стороны - да, ты прав. Конкретно для этого случая - пренебрежительно мало.
С другой стороны - дело в общем подходе. Представь, что вместоRect.Left + list_images.Width
у тебя какой-нибудьObjectA.SomeIntProperty + ObjectB.SomeIntProperty
на которые каскадные геттеры наложены без inline-директивы. И тут уже фиг его знает, где больше времени потеряется, на TextOut или вычислении свойств.
Если есть возможность что-то вычислить заранее и вынести за цикл - лучше вычислить и вынести. Хуже - точно не будет.
← →
Anatoly Podgoretsky © (2011-05-11 13:49) [12]> clickmaker (11.05.2011 13:24:08) [8]
Ну подумаешь на час будет быстрее, чем при семидневной работе.
← →
Anatoly Podgoretsky © (2011-05-11 13:50) [13]> clickmaker (11.05.2011 13:32:10) [10]
Это без сомнений и со временем сумеет инварианты вычислять и выполнять их
вне цикла.
← →
Anatoly Podgoretsky © (2011-05-11 13:52) [14]> Ega23 (11.05.2011 13:39:11) [11]
Представить можно, но поскольку это не константы, а свойства да еще и
каскадным геттером, то может их надо постоянно вычислять?
← →
Ega23 © (2011-05-11 14:16) [15]
> то может их надо постоянно вычислять
Ключевое слово - "может", согласись? :)
← →
KSergey © (2011-05-11 14:28) [16]> Ega23 © (11.05.11 12:53) [6]
> > Оптимизация от этого будет копеечная в сравнении с прочим.
> Смотря сколько раз этот код вызывается.
Не забываем, что Canvas.TextOut() вызовется ровно такое же количество раз.
Так что здесь - копеечная.
← →
KSergey © (2011-05-11 14:32) [17]> KSergey © (11.05.11 14:28) [16]
Чета я опоздал :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.017 c