Страница 1 из 1

и еще раз о фильтрах...

Добавлено: 07 Ноябрь 2008, 3:51
SSTA
Здравствуйте. CW6.3, ABC,Стандартный browse, Range Limit Type = Range Of Values, штатный фильтр CommonFilter()=1 (прототип - (),string) - довольно сложная функция, много чего перебирает, пока выдаёт результат. Проблема в следующем: если возвращаю высчитанное реальное значение (true, false), то очень сильно возрастает время выполнеия (в 8-10 раз) по сравнению с вариантом, когда после всех расчетов из CommonFilter() насильно возвращаю true. То есть, если время, потраченное на вычисления условия фильтрации не существенно, тогда где собственно прячется задержка?

Re: и еще раз о фильтрах...

Добавлено: 07 Ноябрь 2008, 10:41
Дед Пахом
скорее всего это шутки оптимизирующего компилятора - он видит, что вычисляй, не вычисляй, всё равно функция вернёт true, ну и не вычисляет ничего.
Но это только предположение.

Re: и еще раз о фильтрах...

Добавлено: 07 Ноябрь 2008, 13:11
Игорь Столяров
Да, я тоже с этим согласен. Попробуй добавить в алгоритм работы фильтра, например BEEP и посмотреть
(точнее послушать :) ) работает ли он если функция все равно насильно возвращает TRUE.

Re: и еще раз о фильтрах...

Добавлено: 07 Ноябрь 2008, 21:37
Apron63
Есть предложение попробовать трассировку драйвера. Недавно был случай, когда используется и Range Limit и Filter как выяснилось позже одно поле из фильтра попадало в другой (неиспользуемый в данном Browse) ключ, с виду благопристойная комбинация вызывает непонятное дергание по другому ключу, при трассировке просто зайти-выйти из Browsе образовался лог примерно метров на 5. После того как поменял структуру ключей, глюк пропал. Clarion 6.3 ABC.