Страница 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.