select case
Интересно, а как быстро работает эта конструкция? если, предположим, их (case-ов) порядка тысячи в процедуре, и условию соответствует последний case
Я, конечно, сам не проверял, но думаю, что достаточно быстро - ведь это собственно язык, после компиляции должно быстро работать.
Но если у тебя в программе есть Select Case на 1000 случаев - значит твоя программа написана плохо (уж не обижайся). Постарайся изменить логику своей программы. Ручная дрель хороша для трех дырок. Для тысячи - лучше купить электрическую... ;)
if ... goto case1
else if ... goto case2
else if ... goto case3
так что если case тысячный до него произошло 1000 проверок.
Насчет скорости...
на asm это выглядит так
cmp ...
je ...
cmp ...
je ...
cmp - 1-2 цикла
jmp - 8-16 (может и больше)
Я, конечно, сам не проверял, но думаю, что достаточно быстро - ведь это собственно язык, после компиляции должно быстро работать.
Но если у тебя в программе есть Select Case на 1000 случаев - значит твоя программа написана плохо (уж не обижайся). Постарайся изменить логику своей программы. Ручная дрель хороша для трех дырок. Для тысячи - лучше купить электрическую... ;)
Привет Так я еще не писал эту прогу ;-) Просто здесь работа с базами данных (dbf-файлы). Предположительно есть форма, в которой будут указываться критерии сортировки, критерии отбора данных, поля, необходимые к выводу (полей порядка 30). Комбинации критерий отбора и отображение полей может быть много Не так ли? А данные получаю в Excel через sql-запросы (microsoft query). Вот так вот.
Привет Так я еще не писал эту прогу ;-) Просто здесь работа с базами данных (dbf-файлы). Предположительно есть форма, в которой будут указываться критерии сортировки, критерии отбора данных, поля, необходимые к выводу (полей порядка 30). Комбинации критерий отбора и отображение полей может быть много Не так ли? А данные получаю в Excel через sql-запросы (microsoft query). Вот так вот.
Абстрактно, конечно, трудно рассуждать, но можно хранить твои варианты где-либо (в Экселе или в Дбф) вместе с параметрами того, что тебе нужно потом делать. Не могу поверить, что в каждом из вариантов тебе нужен абсолютно неповторимый алгоритм дальнейших действий. Наверняка твои дальнейшие действия можно разделить на несколько групп с однотипными комбинациями - а значит, и существенно уменьшить количество кейсов. Ну не дело это - такие программы устраивать (см. мою фразу про дрель). 8)
Абстрактно, конечно, трудно рассуждать, но можно хранить твои варианты где-либо (в Экселе или в Дбф) вместе с параметрами того, что тебе нужно потом делать. Не могу поверить, что в каждом из вариантов тебе нужен абсолютно неповторимый алгоритм дальнейших действий. Наверняка твои дальнейшие действия можно разделить на несколько групп с однотипными комбинациями - а значит, и существенно уменьшить количество кейсов. Ну не дело это - такие программы устраивать (см. мою фразу про дрель). 8)
Ну насчет тысячи case-ов я, конечно погорячился. Их действительно будет гораздо меньше. Хотя все-таки интересно, за какое время он пробежит эту тысячу Ну хотя бы сотню ;0) Попробовать что-ли?
Ну насчет тысячи case-ов я, конечно погорячился. Их действительно будет гораздо меньше. Хотя все-таки интересно, за какое время он пробежит эту тысячу Ну хотя бы сотню ;0) Попробовать что-ли?
Попробовал. Использовал 775 case-ов. До последнего доходит меньше чем за секунду.
Попробовал. Использовал 775 case-ов. До последнего доходит меньше чем за секунду.
Примерно так и должно было быть... :)