![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос в ускорении расчёта. [D6, XP]
Drowsy © (2012-01-10 07:17:00)В базе данных до фига небольших по количеству, но "длинных" записей таблиц.
Расчётный алгоритм связан с активной навигацией по датасетам этих таблиц.
Вопрос в ускорении расчёта.
Например, если работать не с датасетами, а со связанными списками записей, ускорит ли это расчёт?
sniknik (2012-01-10 10:45:00) [41]>> Если нет связанных DBAware, то и метод не нужен.
> Уверен?
уверен что нужен... (для ADO точно), проверка через "внешний объект" гораздо тяжелее отсутствия оной.
OW (2012-01-10 10:16:00) [42]точно не помню где не проверяется, как-то находил, потом забыл где именно, только помню вывод. А он таков: ставить всегда, есть или нет DBAware или что-то еще. Не важно. Ставить.
Проверка:
var
i: Integer;
BoolDC: Boolean;
DC, NDC: Cardinal;
TC: Cardinal;
begin
aq1.Open;
DC := 0;
NDC := 0;
for i := 0 to 999 do
begin
aq1.EnableControls;
BoolDC := (i mod 2 = 0);
if BoolDC then
aq1.DisableControls;
TC := GetTickCount;
aq1.First;
while not(aq1.Eof) do
begin
aq1.Next;
end;
if BoolDC then
DC := DC + GetTickCount - TC else
NDC := NDC + GetTickCount - TC;
end;
ShowMessageFmt('DisCtrl %d -- NoDisCtrl %d',[DC, NDC]);
656 vs 1204 тика
OW (2012-01-10 09:51:00) [43]
> Если нет связанных DBAware, то и метод не нужен.
Уверен?
Jeer (2012-01-10 09:45:00) [44]
> а есть ли в коде .DisableControls?
Если нет связанных DBAware, то и метод не нужен.
Jeer (2012-01-10 09:36:00) [45]
> Вопрос в ускорении расчёта.
Вопрос в архитектуре, а Ваш вопрос - ее следствие.
OW (2012-01-10 09:35:00) [46]если мало записей, и они неизменны,
может, просто создавать массив и работать с ним?
а есть ли в коде .DisableControls? Порой забываешь про него, а с ним скорость уже приемлимой становится, без дальнейших телодвижений
Омлет (2012-01-10 09:27:00) [47]1. Прямой доступ к памяти всегда быстрее.
2. Код в студию.