Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ооп
Я вижу что ооп.. зачем массивы в строки писать, когда в бинарники сразу можно
Я вижу что ооп.. зачем массивы в строки писать, когда в бинарники сразу можно
Написано же, человек их в экселе обрабатывает.
Написано же, человек их в экселе обрабатывает.
не написано такого
не написано такого
Самый первый пост. Если внимательно читать, это этот файл может и не иметь отношения к МТ5. Или обрабатывается специфически.
Самый первый пост. Если внимательно читать, это этот файл может и не иметь отношения к МТ5. Или обрабатывается специфически.
ну так пусть определится откуда он его берет
тоже можно как массив читать, наверноеСпасибо за анализ кода.
Я с большим трудом понимаю ООП, поэтому вносить туда правки для меня мучение. Как я понял, что дело в классе, который отвечает за чтение, что там весь файл разбивается в строковые массивы, и только потом, по моему желанию, я преобразовываю эти строковые значения в иной тип и кладу в массивы уже типа int в своем скрипте. Если я правильно понимаю, то для ускорения процесса надо прочитать весь файл и понять сколько строк и столбцов всего и сколько в каждой такой ячейки символов, а уже под них выделить сразу размер массива? Тогда как это сделать?
Хотелось бы понять откуда берется 400 мегабайт сразу? Я правильно понял, что память выделяется, но не очищается/отдается ранее выделенная?
400 Мб это 36 млн. ячеек с пустыми строками, каждая по 12 байт, 12*36=432.
Чтобы Вам подсказали, как сделать лучше, расскажите о решаемой задаче. Как часто и насколько файл меняется, все ли каждый раз нужно из него читать, постоянно ли от строки к строке число непустых ячеек, все ли ячейки содержат только целые числа. Может быть, 9 минут нужно потратить один раз в неделю и это вовсе не много - тогда и менять ничего не надо.
А вообще, с точки зрения "куда идти, чтобы было быстрее" - магистральное направление: объявить структуру, 57 полей которой соответствуют целым значениям, и использовать ее как для записи, так и для чтения (файл - бинарный). Тогда 78 Мб будут считываться быстрее, чем за секунду, с диска сразу в память, без разделителей и строковых представлений. Для отладки сохранить вывод и в .csv тоже. По размеру файла сразу будет определяться число элементов в массиве этих структур.
400 Мб это 36 млн. ячеек с пустыми строками, каждая по 12 байт, 12*36=432.
Математика ясна.
Чтобы Вам подсказали, как сделать лучше, расскажите о решаемой задаче. Как часто и насколько файл меняется, все ли каждый раз нужно из него читать, постоянно ли от строки к строке число непустых ячеек, все ли ячейки содержат только целые числа. Может быть, 9 минут нужно потратить один раз в неделю и это вовсе не много - тогда и менять ничего не надо.
Задача универсальна, это чтение файлов в формате CSV, так-как данный формат универсален для разных программ, которые сейчас мне дают данные. Если конкретно про этот скрипт, то да, как раз нужно все прочесть и посчитать так-как эксель падает от формул. Ячейки могут содержать не целые числа (не конкретно в этом примере). 9 минут это не много, если это раз в неделю... однако, в том числе, мне нужно работать с таким объемом данных через оптимизатор, передавая файл на сторону и там проводя его обработку при помощи агентов, потом получать результат в формате csv (тут уже конечно можно и в другом формате) и проводить опять обработку. Поэтому я и решил публично обсудить эту проблему, так-как у меня в планах обработка больших массивов данных с применением MT5.
А вообще, с точки зрения "куда идти, чтобы было быстрее" - магистральное направление: объявить структуру, 57 полей которой соответствуют целым значениям, и использовать ее как для записи, так и для чтения (файл - бинарный). Тогда 78 Мб будут считываться быстрее, чем за секунду, с диска сразу в память, без разделителей и строковых представлений. Для отладки сохранить вывод и в .csv тоже. По размеру файла сразу будет определяться число элементов в массиве этих структур.
Даже не представляю, как это можно сделать? Или речь о том, что и изначальный файл должен генерироваться по особым условиям? Тогда может можно сделать конвертор из CSV в бинарный формат?
Можете глянуть и второй класс, как научить его записывать неограниченно число столбцов?
WriteArray / Read работают быстро, макс. размер доходил до 300 мб, все оч быстро происходит, оперативку не жрет
че там кода столько для чтения\записи то, в 4 строчки все делается
Можете продемонстрировать, как это сделать?
ну так пусть определится откуда он его берет
тоже можно как массив читать, наверноеCSV универсальный файловый формат, поддержка которого есть во разном софте, в том числе связанным с МО.
Кроме того, это удобный файл для передачи данных между разными программами(скрипты/советники) MT5, и занимает он не много места.
Можете продемонстрировать, как это сделать?
попробуйте прочесть свой файл так
https://www.mql5.com/ru/docs/files/filereadarray
мне щас вломы терминал открывать, мб завтра )