Скачать MetaTrader 5

Возможно ли избегнуть много "или" (||) в условиях, вызывающих одно и то же действие? - страница 10

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
TarasBY
1740
TarasBY  
borilunad:
Этот вопрос о скорости меня и подвинул к обращению к уважаемым форумчанам, "как избегнуть много "или"...", т.к. полагал, что это вызывает потерю во времени. А если некоторых двигает вступать в полемику из-за своих амбиций или настойчивой рекламы своих разработок, то это остаётся их личным делом, и никак ко мне не относится. В любом случае благодарен всем откликнувшимся! И всем же желаю успехов!
Сначала научитесь мозгами работать, языком работать вы уже научились. Успехов!
Boris
3942
Boris  
TarasBY:
Сначала научитесь мозгами работать, языком работать вы уже научились. Успехов!
Остаётся только сожалеть, что Ваша культура, не говоря уж об элементарной этике, недалеко ушла от Вашего исторического кумира Тараса Бульбы!
Victor Nikolaev
Модератор
15546
Victor Nikolaev  
Как я понял - результата не будет. Жаль. Хотя сделать недолго (при необходимости), вариантов предложили много
Boris
3942
Boris  
Vinin:
Как я понял - результата не будет. Жаль. Хотя сделать недолго (при необходимости), вариантов предложили много

На предыдущей странице я сообщил предварительный результат Алексею (Meat) и мои объснения, которые привожу Вам пролностью:

avatar
891
Meat 13.02.2013 20:36 
borilunad:

Я протестировал все предложенные варианты, и оказалось, что самый быстрый этот: if (A || B || C || D) Action();

Интересно, как он мог оказаться быстрее этого:  if (A) Action(); else if (B) Action(); else if (C) Action(); else if (D) Action();


947
borilunad 13.02.2013 22:46
Meat:

Интересно, как он мог оказаться быстрее этого:  if (A) Action(); else if (B) Action(); else if (C) Action(); else if (D) Action();

Извините, Алексей, только что вернулся домой! Этот вариант не подходит, т.к., как я уже объяснял выше, Асtion(); это не просто функция исполнения, а вмещает в себе ещё несколько условий, общих для предыдущих, но различных по направлению, и, соответственно, в различной порядке исполняемых функций необходимых действий. Как понимаете, я не мог этим вариантом ещё более утяжелить код. А в принципе я с Вами согласен, что Ваш вариант мог быть быстрее, если бы Action(); просто было бы вызовом одной функции, не более. Спасибо Вам большое за оказанную помощь в моих поисках оптимальных решений! Доброй ночи Вам!
Пока ещё не могу ничего добавить к этому, поскольку bool'и не дали сокращения времени, и сейчас проверяю все функции, которые использую, и, как понимаете, времени на это требуется много. Спасибо за Ваше внимание!
Victor Nikolaev
Модератор
15546
Victor Nikolaev  
В принципе, не проблема. Результаты и сам могу получить. Численные результаты
Boris
3942
Boris  
Vinin:
В принципе, не проблема. Результаты и сам могу получить. Численные результаты

Виктор, только сейчас закончил чистку кода, как квартиры после ремонта, выгреб много мусора, как ненужные условия, лишние нормализации, подправил логику, сократил количество используемых функций. В этом мне много помог своими советами Алексей(alsu), за что ему особо благодарен. В результате 4-хмесячный прогон в тестере составляет чуть больше 2-х минут, что меня вполне устроило. А bool'евские функции оказались ненужными, т.к. в скорости не дали выигрыша, но дали мне необходимый опыт работы с ними, что пригодится в дальнейшем. 

Всех принявших участие от души благодарю и желаю всем успехов и хороших профитов!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий