Total быстрее search сумматора в шесть раз



Posted by Анатолий Анимица (213.24.65.253) on March 03, 2001 at 00:22:13:

In Reply to: Re: Эх, Анатолий Антонович:) posted by Аpкадий Водяник on March 02, 2001 at 05:00:35:

Аркадий Григорьевич совершенно справедливо отмечает, что оператор TOTAL намного быстрее справляется с суммированием полей фактов, чем маленькая программка из search-success-(+) -goto loop.
Я обычно не измеряю времен процессов, которые занимают меньше 10% общего времени задачи (в форме или файле-коэффициенте), а здесь решил померить. Вот что получилось:


y2=0;y3=0;z2=0;z3=0
rewind facts
:loop
search ta ?x1,?x2,?x3,?x4,?x5,?x6
if [success]
y2=y2+x2;y3=y3+x3
goto loop
endif
total ta ??,?z2,?z3,??,??,??


Программа испытываласьна случайной базе, где этих ta-фактов было около 25000 (24568).
Как видно, в программке два куска - первый использует search, а второй - одна строка total (не считая общей строки инициализации переменных).

Результат - total считает свои суммы за 55 мс, а search с окружением - за 300, из которых 250 занимает собственно search.

Чем меньше переменных суммируется, тем больше преимущество total (шестикратное отношение получено на суммировании только x2(z2), для двух переменных получено отношение 5.8, это не существенно.

Таким образом, в самом деле применение total может привести к ускорению выполнения форм на несолько десятков процентов - в зависимости от сложности остальной части формы.

А в предыдущем ответе я допустил неточность - отвечая, думал о своем и смешал total, range и select. В этой части сообщение несостоятельно.

ААА



Пpишедшие ответы: