![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| sgentstuff |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 13.9.2005 Репутация: нет Всего: 1 |
есть много вот таких условий, как можно увеличить скорость проверки, может нужно в корне что-то поменять или подругому никак?
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
sgentstuff, ну ты спросил! А откуда переменная берётся? Если, например, ты её вытягиваешь ихз базы, то можно посоветовать сравнивать числовые идентификаторы(мало ли, может вышло бы что-нить типа "if *(id>3) AND (id<12)"). Если у тебя приходит на порт в виде сигнала, тоже можно отсеят. Например, наложив на пришедший сигнал битовую маску..
Если речь же именно об этом варианте, то ответ "нет". Других конструкций, более быстрых чем if, в этом случае не предвидится. Разве что отсортируй совпадения по мере уменьшения вероянтости(сначала - самое вероятное) и отключи флаг компиляции "Полная эмуляция логического выражения". |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
sgentstuff, я так понимаю строки сравниваешь, можно предложить вариант со сравнением посимвольно , имхо будет быстрее
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
sgentstuff, не знаю на сколько здесь критично использование именно строк, но можно все строковые константы, заменить перечисляемым типом и проверить попадает ли число во множество состоящее из этих констант.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| sgentstuff |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 13.9.2005 Репутация: нет Всего: 1 |
alexeis1 - и намного быстрее будет работать? Добавлено @ 09:36
как это сделать? --------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда. |
||||
|
|||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 5 Всего: 16 |
sgentstuff, я бы использовал регулярные выражения, по крайней мере из всего предложенного на мой взгляд наиболее рациональный и довольно быстрый способ.
|
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 17 Всего: 50 |
Можно еще запихнуть строки в StringList отсортировать и делать так
|
|||
|
||||
| Romikgy |
|
||||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
BUGOR,
не быстрее чем простое сравнение строк, сам подумай
А сравнивать строковой элемент на нахождение индекса , не будет тоже самое, что предложил автор? Этот вариант намного муторнее , чем простое сравнение строк, но имхо быстрее , берем иследуемую строку и по очереди берем 1 символ и сравниваем потом второй и т.д. одно единственное надо подготовить с чем сравнивать , как бы создать дерево , например для твоего варианта
начало или далее будет таким буква t начинается во втором условии первой строки и первом условии третьей , так вот вместо прохода по каждому условию будет проходить по дереву, имхо количество условий уменьшится PS а чем не подошел обычное сравнение строк? Добавлено @ 09:49 Matematik, самый простой в исходнике код, но он будет медленее чем обычное сравнение строк -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||||
|
|||||||
| sgentstuff |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 13.9.2005 Репутация: нет Всего: 1 |
и это быстрее будет работать, ведь стринг лист теми же or будет проверять, или нет? --------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда. |
||||
|
|||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Еще как! - будут ведь сравниватся не строки, а индексы констант в множестве, но плохо, что может понадобится сама строка, тогда можно сделать масив типа.
и иметь строковое представление. Добавлено @ 09:52
Еще как медленно, он ведь будет еще каждый раз организовывать поиск в строке, для нахождения индекса. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| dvamaster |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 3 Всего: 10 |
отнюдь не быстрее, он сравнивает в цикле все строки, а потом индекс выдает Мона так
-------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
||||
|
|||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 5 Всего: 16 |
Вообще, если такие условия используются в цикле и их много, то нужно что-то в корне менять, ибо в любом случае много ты не выиграешь ни на одном предложенном способе, а если сравнения выполняются не в цикле, то речь идёт больше о "красоте" и рациональности кода, то я всё же настаиваю на регулярных выражениях
|
|||
|
||||
| sgentstuff |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 13.9.2005 Репутация: нет Всего: 1 |
PS а чем не подошел обычное сравнение строк?
дело в том что этих условий у меня будет около 200 штук, и эта проверка вставленна в очень большой цикл, и теперь моя прога работает несколько часов, все из-за того что проверяется много условий, вот я и хотел как-то оптимизировать --------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| sgentstuff |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 13.9.2005 Репутация: нет Всего: 1 |
на счет стринг листа, если отсортировать как предложили и потом сравнивать может все-таки быстрее будет? --------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |