Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов - страница 34
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так и глазам приятней. Если цикл растянут на пару страниц по высоте монитора, то замучаешься искать где он заканчивается, а свернуть нет возможности. Вот такими методами и выкручиваемся. А оказывается ещё и компилируется пошустрей. Приятно.
Вот возможности свернуть цикл крайне не хватает в ME - это правда!
Вот возможности свернуть цикл крайне не хватает в ME - это правда!
+1.
+1.
Фолдинг народ просит уже больше 5 лет... Но R и Python для 2х человек важнее....
Код вызывает ошибку доступа к памяти в обоих терминалах (вылет по Access violation):
Я понимаю, что так делать нельзя, но в больших кодах такие проблемы иногда всплывают. Проблема в том, что после изменения размера массива ссылка на один из элементов этого массива может стать невалидной. Инструментов проверки невалидности, к сожалению, нет. Ошибка очень трудно вылавливается.
Продублировал сообщение в тему по МТ4.
Инлайн наоборот увеличивает объем анализируемой портянки, так как встраиваемая функция полностью переносится в тело вызывающего блока.
У нас агрессивный инлайнинг ради ускорения. Без инлайнинга вообще об оптимизаторе кода говорить нельзя.
Нарежьте функции на множество более мелких и сократите время компиляции в разы и десятки раз.
Все время тратится на многопроходную оптимизацию портянки инструкций. Если делать длинные функции, то лапша вашего кода получается такой, что каждый проход оптимизации дает улучшение. Это приводит к множеству проходов оптимизатора кода.
Резать на мелкие, что все равно инлайнится, странно.
Я понимаю, что так делать нельзя, но в больших кодах такие проблемы иногда всплывают. Проблема в том, что после изменения размера массива ссылка на один из элементов этого массива может стать невалидной. Инструментов проверки невалидности, к сожалению, нет. Ошибка очень трудно вылавливается.
По коду не увидел криминала. Поясните, пожалуйста.
Да не, это просто база разных комбинаций листов дерева.
Что то типа такого:
Таких строк порядка 43к, ну и доп логика ещё на 2к строк (не считая дополнительных классов). Не знаю, почему так долго и нормально ли это...
Ну все, пора метаквотам думать о раздельной компиляции ))
Инлайн наоборот увеличивает объем анализируемой портянки, так как встраиваемая функция полностью переносится в тело вызывающего блока.
У нас агрессивный инлайнинг ради ускорения. Без инлайнинга вообще об оптимизаторе кода говорить нельзя.
А тут народ не в курсах насчет прологов-эпилогов функций ) Как у вас не могу знать, могу только у VS CPP посмотреть asm, на коротких функциях приличный оверхед
Резать на мелкие, что все равно инлайнится, странно.
Не странно. Вы просто не задумываетесь, какие портянки пишут некоторые люди.
Резать многотысячно строковые функции на более мелкие - это правильно. Я же не говорю резать на микрофункции по 5-10 строк.
Это общая проблема оптимизирующих компиляторов.
Если у тебя есть пару десятков тысяч ассемблерных инструкций одной портянкой, то каждый проход оптимизации дает улучшение. Можно прогнать десятки и сотни проходов и все еще будет улучшение результирующего кода.
Некоторые компиляторы оценивают размер кода функции и кардинально лимитируют количество циклов оптимизации. Мы пока не сильно лимитируем, хотя с каждым билдом подрезаем усилия оптимизатора кода на портянках.
Спасибо! Действительно, так компилируется более чем в 10 раз быстрее. А на скорости исполнения кода это не отразится негативно?