Ошибки, баги, вопросы - страница 2880
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
нет
если будут повторяющиеся участки кода - получите тестирование оптимизации!
какая разница сколько выполняется rand() ?
да пусть он выполняется 2/3 времени теста, главное чтобы время выполеения rand() было постоянным
ну и имхо, переключать контекст на выполнение системных функцций нужно, Ваш же MQL код будет использовать системные MQL-функции? - смысл идеальный код тестить?
)) разница в скорости могла быть в 4 раза в пользу одно из способов (1 к 4), но т.к. операция rand раз в 10 больше по времени чем остальной код этой разницы бы не было видно (11 к 14)
)) разница в скорости могла быть в 4 раза в пользу одно из способов (1 к 4), но т.к. операция rand раз в 10 больше по времени чем остальной код этой разницы бы не было видно (11 к 14)
нет не могла
разница сразу видна
проверим, что-нибудь, что объявляли разработчики в новшествах, часто пишут, что время доступа к таймесериям для какой-нибудь функции было оптимизировано = давно не проверял
2020.10.16 02:11:20.671 SpeedTst (EURUSD,H1) tst 1 : : loops=10000000 ms=353174
2020.10.16 02:11:21.967 SpeedTst (EURUSD,H1) tst 2 : : loops=10000000 ms=1296043
2020.10.16 02:11:21.967 SpeedTst (EURUSD,H1) 11304533.15558525 : 11303930.69247558
2020.10.16 02:11:44.012 SpeedTst (EURUSD,H1) tst 1 : : loops=10000000 ms=359757
2020.10.16 02:11:45.369 SpeedTst (EURUSD,H1) tst 2 : : loops=10000000 ms=1357325
2020.10.16 02:11:45.369 SpeedTst (EURUSD,H1) 11304350.05612442 : 11304321.21848488
вообще некритично
время выполнения rand() постоянное, скорее всего это обычная С++ функция , гуглится "rand c++ source code"
инициализировать обязательно нужно, но если инициализировать константами, можно нарваться на оптимизацию
в общем не понятна нелюбовь к rand()
как вариант инициализироваться чем-нибудь таким:
будет быстро
запустил Ваш скрипт, имхо не правильно
основное время это загрузка кода в кэш и затем в процессор
ну и добавим дискретность системного таймера
получим... почти случайное число
долго тестировать нужно, примерно 100500 раз, имхо
rand() зашумляет результат.
На моем компе одна итерация цикла занимает около полутора наносекунд.
С двумя rand() одна итерация увеличивается в два раза - почти до 3 наносекунд. При этом нужно понимать что в такой итерации изчезает два раза доступ к элементу большого массива, что тоже достаточно дорого.
Значит можно предположить, что на два rand() тратится около 2/3 всего времени итерации. Я конечно погорячился насчет "на порядок" ))
Я не понял, как можно нарваться на оптимизацию, если предварительно подготовленный массив заполнен случайными числами.
Уже как-то речь шла о производительности rand(). Я даже попытался сам написать подобную функцию. https://www.mql5.com/ru/forum/170952/page137#comment_12010041
результат
Думаю итог таков, что почти без разницы чем пользоваться - union или через бинарный сдвиг.
Я в своей библиотеке iCanvas использую оба этих метода для работы с цветом.
Вспомнил, что тоже долго тестировал производительность и пришел к выводу, что почти без разницы. Но код с union более читабельный.
Признаться меня это разочаровало, т.к. ожидал, что с union я добьюсь заметного выйгрыша в производительности.
Я не понял, как можно нарваться на оптимизацию, если предварительно подготовленный массив заполнен случайными числами.
выше 2 ссылки на хабр давал, в первой статье хорошо показано как обычный цикл выглядит после компиляции
я не утверждаю, что обязательно можно попасть на оптимизацию выполнения, но имхо, если массив не изменяется, что по сути является для цикла константной областью памяти с константным размером, не факт, что не всплывет какая оптимизация, на каком-нибудь типе процессоров, причем оптимизацию можно ждать как и от компилятора, так и от процессора с кэшем
Думаю итог таков, что почти без разницы чем пользоваться - union или через бинарный сдвиг.
выше 2 ссылки на хабр давал, в первой статье хорошо показано как обычный цикл выглядит после компиляции
я не утверждаю, что обязательно можно попасть на оптимизацию выполнения, но имхо, если массив не изменяется, что по сути является для цикла константной областью памяти с константным размером, не факт, что не всплывет какая оптимизация
судя по результатам никакой оптимизацией не пахнет
судя по результатам никакой оптимизацией не пахнет
да
спор то не в конкретном коде
а в самой методике тестирования, я пока придерживаюсь, что тестирую оптимально, и rand() хоть и вносит искажения, но это линейный коэффициент, а не пропорциональный, т.е. точность по сути не сильно важна если нет отличий по скорости менее 5%, имхо
Всем, привет!
У меня вопрос, наверное к разработчика MQL5? может быть кто-то еще в курсе... Планируется ли интеграция компилятора/редактора кода ME с какими-нибудь популярными средами разработки типа IDEA или Visual Studio? Для меня Meta Editor это большая боль. Сворачивания блоков нет, автоподстановки шаблонов нет (типа начинаешь набирать for(... а он тебе сразу предлагает шаблон цикла подставить и многое другое), подсветки всяких важных кусков нормальной нет. И так далее и тому подобное. Не говорю, про то, что современные роботы сложны, это большие проекты и возникают существенно более серьезные требования к управлению кодом и к возможности коллективной разработки.
Никто уже не пишет свои редакторы и компиляторы, все от них отказываются и переходят на готовые решения от Microsoft, JetBrains и др. Все современные редакторы имеют системы настраиваемых плагинов, которые позволяют туда прикрутить все что угодно. Задача-то не сложная в принципе.
Уважаемые, ну хоть кто-нибудь хоть что-нибудь может ответить по непонятной для меня ситуации?
А ты еще больше позадирай программистов. Тогда точно помогут