Прожорливость памяти ОЗУ MT5, проблемы с чтением/записью больших файлов - страница 7

 
Оказалось, что по у меня 820мб отъедает терминал без скрипта , значит бинарный файл отъедает 180 мегабайт, что видимо нормально, учитывая два заполненных массива.
 
Тема не совсем правильно сформулирована.

Память отьедает не терминал, а конкретная программа с конкретной реализацией. В данном случае, MQL программа неправильно и неэффективно хранит данные.
 
Aleksey Vyazmikin:

Можете сказать, что в нём исправить?

ну все нормально у вас там вначале массив читается, только после чтения файл надо закрыть

и записывать точно так же а не через вашу либу

 
Renat Fatkhullin:
Тема не совсем правильно сформулирована.

Память отьедает не терминал, а конкретная программа с конкретной реализацией. В данном случае, MQL программа неправильно и неэффективно хранит данные.

Тема сформулирована в момент возникновения проблемы, когда окончательного понимания причин не было. Я исходил из того, что у меня есть класс, который создан при участии сотрудника MQ, а значит сомневаться в правильности его работы у меня не было причин.

Если программа неправильно и не эффективно хранит данные, то может быть сообщите, как правильно и эффективно их хранить? Что нужно изменить в классе, что б он потреблял меньше памяти?

Вообще, же, было бы очень хорошо, если бы с поставкой терминала шел подобный класс, для работы с таблицами на базе CSV.

 
Maxim Dmitrievsky:

ну все нормально у вас там вначале массив читается, только после чтения файл надо закрыть

и записывать точно так же а не через вашу либу

Про закрыть - хорошо закрою, спасибо.

Записывать приходится в двух вариантах, так-как формат CSV помогает реально видеть, что творится в массивах - увы, я допускаю ошибки и поэтому лучше уж я перепроверю вычисления в экселе при отладке кода, чем потом сделаю неправильные вывода.

 
Vladimir:

Что Вам удалось выудить из документации по поводу третьего параметра, полезное для этого случая, когда решается задача подъема в память .csv, создаваемых в разных программах и имеющих произвольный размер?

Не стесняйтесь, предложите изменение лучше, нефиговое, повышающее быстродействие перевыделения памяти (снижающее число вызовов ArrayResize) сильнее, чем двоичный поиск...

Бесплатный урок для новичков:

Третий параметр ArrayResize задаёт реальный размер массива, кратный этому числу.

ArrayResize(arr, 5, 1000) - займёт в памяти 1000 элементов.

ArrayResize(arr, 1005, 1000) - займёт в памяти 2000 элементов.

Поэтому нет постоянного выделения памяти.

 
Aleksey Vyazmikin:

Тема сформулирована в момент возникновения проблемы, когда окончательного понимания причин не было. Я исходил из того, что у меня есть класс, который создан при участии сотрудника MQ, а значит сомневаться в правильности его работы у меня не было причин.

Если программа неправильно и не эффективно хранит данные, то может быть сообщите, как правильно и эффективно их хранить? Что нужно изменить в классе, что б он потреблял меньше памяти?

Вообще, же, было бы очень хорошо, если бы с поставкой терминала шел подобный класс, для работы с таблицами на базе CSV.

Не в классе проблема, а в использовании этого класса.

И вообще, чтение из CSV уже реализовано на уровне FileOpen с флагом FILE_CSV.

Целый отдельный класс для этого не нужен.

 
Roffild:

Бесплатный урок для новичков:

Третий параметр ArrayResize задаёт реальный размер массива, кратный этому числу.

ArrayResize(arr, 5, 1000) - займёт в памяти 1000 элементов.

ArrayResize(arr, 1005, 1000) - займёт в памяти 2000 элементов.

Поэтому нет постоянного выделения памяти.

Владимир, в отличии от Вас, смог проанализировать код и найти возможность его ускорить. А Вы тут позиционируете себя, как теоретик, не умеющий работать с чужим кодом. Все эти выподы - ну что они дают, может сможете показать, что добавление дополнительных параметров ускорит работу или снизит потребление памяти?


Roffild:

Не в классе проблема, а в использовании этого класса.

И вообще, чтение из CSV уже реализовано на уровне FileOpen с флагом FILE_CSV.

Целый отдельный класс для этого не нужен.

Если Вы не понимаете, для чего это нужно, то зачем же решаете за других? Я говорю, что нужно делать удобно для людей, для этого и пишутся классы.

 
Aleksey Vyazmikin:

Владимир, в отличии от Вас, смог проанализировать код и найти возможность его ускорить. А Вы тут позиционируете себя, как теоретик, не умеющий работать с чужим кодом. Все эти выподы - ну что они дают, может сможете показать, что добавление дополнительных параметров ускорит работу или снизит потребление памяти?

Вообще-то Владимир своей правкой класс ускорить никак не мог. Класс был создан "сотрудником MQ", а пользователь, который не читал документации, умудрился улучшить класс?

Aleksey Vyazmikin:

Если Вы не понимаете, для чего это нужно, то зачем же решаете за других? Я говорю, что нужно делать удобно для людей, для этого и пишутся классы.

То есть для использования стандартных функций, нужно обязательно оборачивать их в классы?

Может стоит почитать документацию по FILE_CSV, а не использовать целый отдельный класс?

Тут уже выкладывали другие готовые решения, которые были проигнорированы.

Моё решение для записи в CSV без ограничения на количество столбов находится в моей библиотеке. Даже принципы ООП (вряд ли Вам знаком этот метод программирования) соблюдены. Но рекомендовать его не буду.

Бесплатно вряд ли тут появится нужное решение...

 
Roffild:

Вообще-то Владимир своей правкой класс ускорить никак не мог. Класс был создан "сотрудником MQ", а пользователь, который не читал документации, умудрился улучшить класс?

Вы проверили и не выявили ускорения? Или Вы утверждаете, что я ввожу тут всех в заблуждение?

Roffild:

То есть для использования стандартных функций, нужно обязательно оборачивать их в классы?

Может стоит почитать документацию по FILE_CSV, а не использовать целый отдельный класс?

Тут уже выкладывали другие готовые решения, которые были проигнорированы.

Моё решение для записи в CSV без ограничения на количество столбов находится в моей библиотеке. Даже принципы ООП (вряд ли Вам знаком этот метод программирования) соблюдены. Но рекомендовать его не буду.

Бесплатно вряд ли тут появится нужное решение...

Вы ветку внимательно читаете? Видели мой ответ на готовое решение в виде функции? У Вас есть другое решение? Конечно что такое ООП я не знаю, внимательно читающий ветку человек сразу бы это подметил...

Про платность/бесплатность - это уже смешно, я как раз показал, что платные решения не делают решение лучше бесплатного, а Вы опять про деньги...

Причина обращения: