Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
...Заключается она в том, что если для загрузки индикатора требуется и время, и ресурсы (с чем никто не и спорит), то желательно сделать это однократно при запуске программы, которая вызывает эти самые индикаторы. Т.е. в OnInit(). Образно говоря, "потерпеть пять минут при запуске основной программы, а потом спокойно пользоваться"...
С таким подходом согласен. Так и делаю. Правда дело в том, что иногда терминал не справляется с загрузкой всех индикаторов. Просто виснет... Вопрос к разработчикам - стоит ли улучшать аппаратную составляющую (оперативку, скорость CPU, etc.) ?
Тут уже давали ссылку, оптимизировать надо код - https://www.mql5.com/ru/articles/259.
Я решил проблему отказом от тяжелых ай-кастумов и переносом логики в совтника, стандартные индикаторы оставил.
Убил пол ночи. Злой - слов нет. Делюсь результатами:
Этот пустой индюк, создающий один объект, жрет 10 Мб памяти.
Если объект убрать, потребление памяти падает практически до 0 (как замерить точно - не знаю).
Обидно - не то слово. Я сижу оптимизирую буферы, доступ к другим индикаторам... а проблема в одном единственном объекте-метке.
Если объект убрать, потребление памяти падает практически до 0 (как замерить точно - не знаю).
Интересный эффект.
Если не создавать объекта, т.е. закомментировать ObjectCreate в вашем примере, то выделение памяти при старте индикатора действительно мизерное.
Но, после удаления этого индикатора с графика, почему-то происходит выделение памяти, причем на уровне, как если бы мы создавали объект (~10Мб).
Если объект убрать, потребление памяти падает практически до 0 (как замерить точно - не знаю).
так хочеш загрузит история с 1970г ....
Если заменит точка привязки на TimeCurrent() / Bid ( наместо 2 / 2) сколько памят потребляет ?
Когда добавляете 200 000 объектов на чарт, а потом все это быстро работает, почему так происходит? Дело в том, что внутри проведена огромная работа по тюнингу производительности ради возможности работы с сотнями тысяч объектов.
А о кешах задумываетесь? Кеш выделяется даже при выделении одного обьекта.
Когда добавляете 200 000 объектов на чарт, а потом все это быстро работает, почему так происходит? Дело в том, что внутри проведена огромная работа по тюнингу производительности ради возможности работы с сотнями тысяч объектов.
В настройки компилятора это может быть вынесено?
Или "Заткнулись, и жрем!" (с)?
В настройки компилятора это может быть вынесено?
Или "Заткнулись, и жрем!" (с)?
А разве кэш не вытесняемый? Ну тоесть когда память нужна, урезаем кэш, память не нужна, раздуваем?
И еще, добавление последующих объектов ведь не съедает столько же памяти, это скорее начальная инициализация примочек, иначе бы и пару тысяч объектов не создать. (2000 х 5Мб = 10Гб) в своп бы глубоко ушли
А о кешах задумываетесь?
Может есть смысл рассказать как реализовано кэширование более подробно, а лучше описать в справке, чтобы предупредить вопросы по этой теме в будущем.
Беру к примеру справку для ObjectDelete.
Написано:
Возвращает true при успешном завершении операции удаления, в противном случае false.
Но это же неправда.
Этот объект ставится в очередь на удаление и true возвращается при успешной постановке в очередь а не при удалении. Т.е. это разные события.
А о том когда освобождается память, выделенная под этот объект я вообще незнаю. А хотелось бы знать.
Но почему бы не написать правду прямо в справке. Это относится и кэшам тоже, и ко всему что вызывает вопросы.
Почему нужно постоянно догадываться как это работает, обращаться в сервисдеск и не спать по пол ночи как некоторые занимаясь отладкой?
Тогда мы бы читали справку а не эти форумы в поисках правды.
А ваши ответы, Ренат, стали бы очень простыми: "Читайте справку"!
Это написано без негатива, просто хочется огранить камень.
Но, после удаления этого индикатора с графика, почему-то происходит выделение памяти, причем на уровне, как если бы мы создавали объект (~10Мб).