[Архив!] Чистая математика, физика, химия и т.п.: задачки для тренировки мозгов, никак не связанные с торговлей - страница 510
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
не люблю пользоваться операторами continue и break, но может быть чем нибудь помогут Вам, тем более 36-кратное вложение if на mql может и "не прокатить"
А ускорить Мой код можно разбив if, состоящий из сложного 36-кратного проверочного условия, на 36 if-ов с простым условием! :)))
Думаю, код заметно ускорится, хотя, чтобы знать точно нужно разбираться в машинных инструкциях, которые получаться в результате компиляции.
Я твой код запускал в MT5. В нём короткие вычисления логических операторов уже реализованы (встроены), так что смысл дробить код на множество ифов отсутствует.
В MT4 другое дело, там эта оптимизация имеет смысл. Но оценку времени я проводил в MT5, по короткой схеме.
Ускорил в 4 раза. Переписал Validate().
Теперь так:
WorkTime == 200 msУжасно, но есть смысл оптимизировать код следующим образом. В разы быстрее! И тут уже MT5 не поможет.
Это конечно не идея. Но интересно как быстро сработает! :))
Также в коде уменьшил диапазон значений делителя. 654321/2 = 327160,5...
Ускорил в 4 раза. Переписал Validate().
Теперь так:
WorkTime == 200 msКрасиво получилось! Не то что у Меня.
Есть идея написать алгоритм деления в столбик. Делить по разрядно, записывать остатки от деления и при совпадении или результате большем, чем 6, делать операцию continue. Я именно этот и делал сегодня днём, когда перебирал пятёрку, делил всё в столбик. Но это на долго! :))
Нужно именно в представлении шестизначных чисел делать оптимизацию, как это сделано у Тебя.
Есть идея написать алгоритм деления в столбик. Делить по разрядно, записывать остатки от деления и при совпадении или результате большем, чем 6, делать операцию continue. Я именно этот и делал сегодня днём, когда перебирал пятёрку, делил всё в столбик. Но это на долго! :))
Нужно именно в представлении шестизначных чисел делать оптимизацию, как это сделано у Тебя.
О! Идея неплохая. Ещё раз переписал. WorkTime=125 ms
О! Идея неплохая. Ещё раз переписал. WorkTime=125 ms
Теперь хоккеисты точно счастливы останутся! :)))) Хотя Я имел ввиду не именно это! ;D
А сколько счётчик времени показывает по Моему коду?
Мне изменения понятны. Я только вот это не осилил пока:
"|=" - логическое "ИЛИ"? А вот дальше полный тупик...
Теперь хоккеисты точно счастливы останутся! :))))
Ага.
Твой новый код работает ещё быстрее, однако там есть косяки.
Количество фигурных скобок не сошлось. Но вроде это фигня, лечится удалением последней.
Объясни смысл выделенных строчек. Не догоняю.
Ага.
Твой новый код работает ещё быстрее, однако там есть косяки.
Количество фигурных скобок не сошлось. Но вроде это фигня, лечится удалением последней.
Объясни смысл выделенных строчек. Не догоняю.
Точно... Бред! :))) А со скобками вроде норма, копировал с готового кода.
Надо так:
Также в MQL5 чуть ускорит сравнение:
Но 125 ms явно не догнать.
А может, ввсе же в С++ ?
.
Validate- функция одного параметра.
Может по старинке... выделяем память и кэшируем bool
для всех допустимых значений аргумента?