CREATE PROCEDURE tst_p_gen_str_data (i INTEGER)
RETURNS (id INTEGER,
s1 VARCHAR(60),
s2 VARCHAR(60),
s3 VARCHAR(60),
s4 VARCHAR(60))
AS
BEGIN
s1 = 'ABC dfg';
s2 = '123 567 9874 10';
s3 = 'qwertyuiop asdfghjl; xzcvnbvmn,m.';
s4 = '';
WHILE (i > 0) DO
BEGIN
id = :i;
i = :i - 1;
END
END
Тестировались следующие отчеты:- Отчет по одному набору данных со строковыми полями.
- Отчет по одному набору данных с целочисленными полями.
- Отчет по двум наборам данных, связанных связью мастер-дитэйл. Наборы данных со строковыми полями.
Таблица с результатами находится здесь.
Вывод:
- для отчетов мастер-дитэйл на двух датасетах разница незначительна — увеличение потребления памяти на 2% и ускорение на 6%.
- для отчетов, основанных на одном наборе данных, достигается существенное ускорение в 35% при умеренном росте потребления памяти — от 9 до 16%.
1 комментарий:
Ускорение MD зависит от того, какой тип датасетов используется. В тесте оба были TIBQuery, данный вариант самый медленный. Если для примера взять сводные ведомости из настройки ЗПиК, то там они построены на TClientDataSet-ах. Там у меня прирост по скорости достигал до 50% при таком же потреблении памяти. Если же один TIBQuery а второй TClientDataSet - то ускорение в пределах 10-12% при увеличении памяти 6-10%.
Отправить комментарий