Особенности языка mql5, тонкости и приёмы работы - страница 250
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Паритет.
Паритет.
static выигрывает для простых типов и проигрывает для структур.
static выигрывает для простых типов и проигрывает для структур.
Крайне странный результат. ИМХО, но что-то не то у них получается. Ниже код, который g++ генерит. Либо у тебя тест некорректный, либо разработчики в компиляторе налажали. Ну не может Test1 потреблять больше процессорного времени чем Test2)
И таки да, убить все это запросто можно при неправильной предварительной оптимизации кода. Обратите внимание на Swap3. Вроде как напрашивающаяся оптимизация, а на выходе, за счет того, что работаем не со значением, а со ссылкой, имеем прямо таки лютейший оверхэд
Либо у тебя тест некорректный, либо разработчики в компиляторе налажали. Ну не может Test1 потреблять больше процессорного времени чем Test2)
Крайне странный результат. ИМХО, но что-то не то у них получается. Ниже код, который g++ генерит.
MQL это не C++ ; разве что внешне похож...сравнивать с gcc не корректно
он вообще клонится в сторону C#
PS/ ну а в примере: static проигрывает для структур, потому-что там(образно) ещё и деструктор. На всех вызовах кроме первого, то что было в static должно быть разрушено и/или вызван метод копирования
PPS/ (для желающих) можно экспериментировать с static T& или static T*, чтобы избежать ненужных копирований и деструкторов
MQL это не C++ ; разве что внешне похож...сравнивать с gcc не корректно
он вообще клонится в сторону C#
PS/ ну а в примере: static проигрывает для структур, потому-что там(образно) ещё и деструктор. На всех вызовах кроме первого, то что было в static должно быть разрушено и/или вызван метод копирования
PPS/ (для желающих) можно экспериментировать с static T& или static T*, чтобы избежать ненужных копирований и деструкторов
Вот ни разу не соглашусь.
Вот ни разу не соглашусь.
про принципиально: авторы языка педалируют "управляемый код". А это шарп, от которого впрочем, они-же ранее открещивались :-)
Опять-же это не С++ и даже ни рядом. Ни вы ни я не можем сравнить итоговые маш.коды там и там и обосновать почему так и почему где-то верно/нет. Поэтому сравнения некорректны. У тебя ведь нет выхлопа asm от MQL? не с чем сравнивать
если при оптимизации, действительно такое происходит, то это повод поправить.
Накопилось таких поправить. Ilyas не зря хлеб ест. Уверен, работа идет.
Из недавних вопросов к оптимизации, что обнаружил.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
Nikolai Semko, 2023.11.14 18:46
Любителям быстрых алгоритмов. Тем кто борется за наносекунды :)
Задача: Найти время открытия бара по заданному времени и ТФ, когда точно известно, что бар в это время существует. Например, по времени открытия и закрытия позиций.
Большинство программистов воспользуется связкой iTime и iBarShift. Это будет самая медленная реализация, особенно такая реализация требует актуальной истории закаченных данных или вычесленных массивов. Более того, такой подход может выдавать ошибки при отсутсвии нужной истории.
Более продвинутые программисты решат эту задачу через структуру MqlDateTime и фукцию TimeToStruct(). Это не плохое решение и достаточно быстрое.
Но существует третье решение, которое более производительней предыдущего решения в несколько раз:
Главная сложность в этом алгоритме - это расчет времени начала месяца (выделено зеленым цветом) Пожалуйста, не пытайтесь понять работу алгоритма. Там происходит магия, которая получилась в результате движения от простого к сложному.
Альтернатива.
Альтернатива.
ну не совсем конечно алтернатива, так как это совсем другая задача. Год и месяц я расчитывал из даты, а здесь они подаются уже на вход.
Моя реализация такой задачи без численных методов, а только логически, была бы, например, следующая:
не думаю, что разница в производительности будет существенной, тем более у меня отсутствуют типы double
Я не против численных методов решения задач (то, что Вы называете алгоритмической оптимизацией), сам ими часто пользуюсь, но в данном случае Вы применяете алгоритмическую оптимизацию к статической системе, и это нормально.
Я же все время выступаю противником оптимизации для ТС, которые всегда являются не статическими системами, а динамическими, ввиду того, что сам рынок динамический и переменчивый. Именно поэтому такую оптимизацию корректней называть подгонкой параметров под исторический период времени. Это самообман и пустая трата времени. Найденный с помощью такой "оптимизации" набор параметров будет в будущем вести себя совсем по-другому.
Попробуйте таким численным методом решить задачу получения дня месяца из входного времени datetime. Сомневаюсь, что сможете.