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

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Можно ускорить и еще, например, если мы знаем, что условие A выполняется в среднем чаще, чем С, а С чаще, чем В, то расположить их надо именно в таком порядке: if(!a){if(!c)if{(!b) M=false;}}
Еще сильнее можно ускорить, комбинируя вероятность выполенния условия с его вычислительной сложностью: например, взяв за критерий произведение вероятности выполнения на величину, обратную времени вычисления, первыми следует проверять те условия, которые наиболее вероятны и имеют наименьшую вычислитеьлную сложность, т.е. те, которые имеют наибольшее значение заданного нами критерия.
Можно ещё таким способом оптимизировать вычисления:
А может, так попробовать:
Спасибо!
Еще сильнее можно ускорить, комбинируя вероятность выполенния условия с его вычислительной сложностью: например, взяв за критерий произведение вероятности выполнения на величину, обратную времени вычисления, первыми следует проверять те условия, которые наиболее вероятны и имеют наименьшую вычислитеьлную сложность, т.е. те, которые имеют наибольшее значение заданного нами критерия.
Я уже давно их в таком порядке расположил. Но если даже вдруг выполнится больше одного условия, тогда выполнится первое попавшееся.
И это без разницы, т.к. потом прописаны общие для всех вариантов заключительные условия.
Еще сильнее можно ускорить, комбинируя вероятность выполенния условия с его вычислительной сложностью: например, взяв за критерий произведение вероятности выполнения на величину, обратную времени вычисления, первыми следует проверять те условия, которые наиболее вероятны и имеют наименьшую вычислитеьлную сложность, т.е. те, которые имеют наибольшее значение заданного нами критерия.
Ни один из операторов не подходит. Может, есть какой-нибудь другой способ без if(A || B || C || D || E) Action;?
Прошу модераторов не отправлять в общую ветку вопрошающих ввиду важности вопроса, над которым думаю и не могу найти более рационального решения! Спасибо!
if(A || B || C || D || E) Action; я бы так сделал if((A + B + C + D + E) > 0) Action; если для Action нужно минимум 3 сигнала, вместо 0 пишем 2
скорость, я не замерял
if(A || B || C || D || E) Action; я бы так сделал if((A + B + C + D + E) > 0) Action; если для Action нужно минимум 3 сигнала, вместо 0 пишем 2
скорость, я не замерял
Ускорение будет колоссальное. Решение очень оригинальное
Ускорение будет колоссальное. Решение очень оригинальное
Если A,B,C,D - функции , то нужно считать по сложности начиная с самой легкой и постоянно проверять на истинность. Так будет работать быстрее.
Благодарю Вас за участие! А, В, С ... не функции, а условия, содержащие функции и не содержащие их, и к тому же взаимоисключающие! И достаточно одного условия, чтобы перейти к другим условиям, которые уже вызывают действие. Если бы были только функции, тогда бы не было проблемы:
double А = function1(); double B = function2(); double C = function3(); double D = function4(); double E = function5(); и далее, как предложил Pako:
if((A + B + C + D + E) > 0)
{другие условие с зеркально различающимися по направлению для закрытия Байев или Сэллов} Action; НО:
А мне нужно, чтобы А = условие1, В = условие2, С = условие3, D = условие4, Е = условие5. Возможно или нет?! Или это невозможно и всё тут!
Например:
Что пробовать-делать не знаю!
А мне нужно, чтобы А = условие1, В = условие2, С = условие3, D = условие4, Е = условие5. Возможно или нет?! Или это невозможно и всё тут!