О количестве проходов Total



Posted by Васеленко Сергей, Фирма КАРДИНАЛ on January 11, 1999 at 05:13:23:

In Reply to: Рустем, не пpомоpгайте pеволюцию! posted by Аpкадий Водяник on January 09, 1999 at 08:15:49:

Согласен с Рустемом Мухаметшиным по полемике насчет Total.

Пpимеp Рустема на старой технологии search:
:


: while 1
: search пpиход товаpа ?T кол-во ?Q
: if [success]=0
: goto end
: endif
: [plus%,'Q'+T,Q] * вот и все
: endwhile
: :end
: #T
: * покажем pезультат и очистим [%]
: #
:


Пример с использованием Total:
:

: #T
: N=[n1 #]
: Q=0
: total пpиход товаpа N кол-во ?Q
: ^^^^^^^^^^^^N ^^^^^^^^^^^^Q
: #
:

Пример Рустема действительно однопроходный.

В примере c Total сканирование ленты вызывается столько же раз, сколько товаров в списке.
Быстрое выполнение Total связано с тем, что подходящих фактов для Total мало.

К примеру, фактов "приход" - 10 000, фактов "расход" - 40 000.
И что дает индексирование? Быстрый поиск 10000 или 40000 из 50000.

Сравнение же на совпадение ключа - N производится для всех подходящих по типу фактов.

Так что Total это не революция.

Может быть, Анатолий Антонович Анимица или Рустем даже формулу скорости алгоритма приведут.

Я также согласен с Аркадием, что 0.9с это тоже важно.
Тем более, что однопроходные алгоритмы на больших объемах тоже требуют времени.

Главное, чтобы можно было выбрать самому стратегию работы системы.



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