double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9}; int maxValueIdx=ArrayMaximum(num_array); Print("Max value = ", num_array[maxValueIdx]);
MathMax(MathMax(MathMax(x4,x3),x2),x1)
и так далее
Integer:
и так далее
MathMax(MathMax(MathMax(x4,x3),x2),x1)
Ого. Интересно, как по производительности такой подход "ударит".
Ого. Интересно, как по производительности такой подход "ударит".
Если важна производительность, то MathMax лучше не использовать, т.к. он медленней обычной конструкции if (a>b) x=a; else x=b;
Поэтому если переменных много, то можно использовать эту конструкцию в цикле. А если не много, то последовательно проверять каждую переменную.
Конечно, но разговор завели о MathMax. if() else больше всего и употребляем.
Алексей, как Вы думаете, и в этом случае лучше одно выражение с MathMax'ами заменить на конструкцию с if?
double dist = MathMax(MathMax(NormalizeDouble(Dist*Point,Digits),spread),MathMax(StopLevel,FreezeLevel));//это заменить? // на это? double dist = NormalizeDouble(Dist*Point,Digits); if(spread > StopLevel && spread > FreezeLevel && spread > dist) dist = spread; if(spread < StopLevel && spread < FreezeLevel) { if(StopLevel > FreezeLevel && StopLevel > dist) dist = StopLevel; if(StopLevel < FreezeLevel && FreezeLevel > dist) dist = FreezeLevel; }
Конечно, но разговор завели о MathMax. if() else больше всего и употребляем.
Алексей, как Вы думаете, и в этом случае лучше одно выражение с MathMax'ами заменить на конструкцию с if?
Что-то Вы накрутили тут столько всего лишнего. Проще ведь такой вариант:
double dist = NormalizeDouble(Dist*Point,Digits); if (dist < spread) dist= spread; if (dist < StopLevel) dist= StopLevel; if (dist < FreezeLevel) dist= FreezeLevel;
Что-то Вы накрутили тут столько всего лишнего. Проще ведь такой вариант:
А как узнать, что больше?
Впрочем ко всему надо подходить с рациональной точки зрения. Например в данном случае вряд ли есть необходимость в такой оптимизации скорости программы, ведь StopLevel, FreezeLevel, spread и Point не меняются в процессе выполнения рабочего цикла, т.е. их не нужно пересчитывать на каждой итерации. А значит переменную dist достаточно посчитать всего один раз, перед началом цикла. Поэтому проще использовать вариант с MathMax, т.к. он сэкономит 3 строчки кода :) Хотя конечно немаловажна также и читаемость кода, но тут уже надо смотреть индивидуально, удобен ли MathMax(MathMax...) для восприятия.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования