MT5 RAM内存贪婪,读/写大文件的问题 - 页 3 12345678 新评论 Maxim Dmitrievsky 2018.07.21 18:16 #21 Vladislav Andruschenko: Oop我明白了......如果你能一次把数组写成二进制,为什么还要把数组写成字符串? Sergey Savinkin 2018.07.21 18:21 #22 Maxim Dmitrievsky:我看出来了,哎呀......如果你能一次把数组写成二进制,为什么还要把数组写成字符串?它是书面的,这个人用EXCEL处理它们。 Maxim Dmitrievsky 2018.07.21 18:22 #23 Sergey Savinkin:它说这个人用Excel处理它们。它没有说 Sergey Savinkin 2018.07.21 18:25 #24 Maxim Dmitrievsky:它没有这样说。第一篇文章。如果你仔细阅读,这个文件可能与MT5没有任何关系。或以特定方式处理。 Maxim Dmitrievsky 2018.07.21 18:27 #25 Sergey Savinkin:第一篇文章。如果你仔细阅读,这个文件可能与MT5没有关系。或以特定方式处理。所以让他确定他从哪里得到的东西 也可以作为一个数组来读,我想。 Vladimir 2018.07.21 19:14 #26 Aleksey Vyazmikin:谢谢你对代码的分析。我很难理解OOP,所以对它进行编辑对我来说是一种折磨。根据我的理解,这是关于负责阅读的类,在那里,整个文件被分割成字符串数组,然后,如果我想的话,我把这些字符串值转换成另一种类型,并在我的脚本中把它们放入int类型的数组。如果我理解正确的话,那么为了加快进程,我应该读取整个文件,弄清楚有多少行和列,每个单元格有多少个符号,然后立即选择数组大小?那么如何做呢?我想了解一下,400兆字节是从哪里一下子拿出来的?我没理解错吧,内存被分配了,但并没有清除/送走之前分配的内存?400Mb是3600万个空行的单元格,每个12字节,12*36=432。 要想被告知如何做得更好,请告诉我们你正在解决的问题。文件变化的频率和程度,是否每次都要从文件中读取,非空单元格的数量是否从一行到另一行是恒定的,所有单元格是否只包含整数。也许每周应该花9分钟,而且根本就不多--那么就没有必要改变什么。 一般来说,就 "去哪里才能更快 "而言,主要方向是声明一个有57个字段的结构,对应于整数值,并将其用于写入和读取(文件为二进制)。然后,78Mb将以比一秒钟更快的速度从磁盘直接读入内存,不需要定界符或字符串表示。为了调试的目的,把输出也保存为.csv。文件的大小 将立即决定这些结构的数组中的元素数量。 Aleksey Vyazmikin 2018.07.21 19:36 #27 Vladimir:400MB是3600万个空行的单元格,每个12字节,12*36=432。数学上的问题很清楚。 弗拉基米尔。要想被告知如何做得更好,请告诉我们你正在解决的问题。文件变化的频率和程度,是否每次都需要从文件中读取所有内容,非空单元格的数量是否从一行到另一行是恒定的,所有单元格是否只包含整数。也许每周应该花9分钟,而且根本就不多--那么就没有必要改变什么。这个任务是通用的,它是读取CSV格式的文件,因为这种格式对不同的程序是通用的,目前这些程序为我提供了数据。如果你具体指的是这个脚本,那么是的,你只需要阅读和计算一切,因为Excel因为公式而崩溃。单元格可以包含非整数(在这个例子中没有特别说明)。如果是每周一次,9分钟并不算多...然而,在其他方面,我需要通过优化器来处理这样的数据量,把文件传到 旁边,在代理的帮助下进行处理,然后得到csv格式的结果(当然,在这里我可以使用其他格式),并再次进行处理。这就是为什么我决定公开讨论这个问题,因为我想用MT5处理大型数据阵列。 弗拉基米尔。一般来说,从 "去哪里才能更快 "的角度来看--主流:声明结构,其中57个字段对应于整数值,并将其用于写入和读取(文件为二进制)。然后,78Mb将以比一秒钟更快的速度从磁盘直接读入内存,不需要定界符或字符串表示。为了调试的目的,把输出也保存为.csv。文件的大小将立即决定这些结构的数组中的元素数量。 我甚至无法想象,这怎么可能做到?还是说,初始文件必须在特殊条件下生成?那么也许你可以制作CSV到二进制格式的转换器? 你能不能也看一下第二类,如何教它写出无限多的列? Aleksey Vyazmikin 2018.07.21 19:40 #28 Maxim Dmitrievsky:WriteArray/Read速度很快,最大尺寸可达300mb,一切都非常快,不消耗RAM。 为什么有这么多的读/写代码,这一切都在4行中完成。你能演示一下如何做到这一点吗? Aleksey Vyazmikin 2018.07.21 19:43 #29 Maxim Dmitrievsky:所以让他决定他从哪里得到它 也可以作为一个数组来读,我想CSV是一种通用的文件格式,各种软件都支持它,包括与MO相关的软件。 此外,它是一个方便的文件,可以在不同的程序(脚本/顾问)MT5之间传输数据,而且不占用很多空间。 Maxim Dmitrievsky 2018.07.21 19:43 #30 Aleksey Vyazmikin:你能演示一下如何做到这一点吗?试着像这样读取你的文件 https://www.mql5.com/ru/docs/files/filereadarray 我现在没有时间打开终端,也许明天吧) Документация по MQL5: Файловые операции / FileReadArray www.mql5.com //| Структура для хранения данных о ценах | //| Script program start function | 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
Oop
我明白了......如果你能一次把数组写成二进制,为什么还要把数组写成字符串?
我看出来了,哎呀......如果你能一次把数组写成二进制,为什么还要把数组写成字符串?
它是书面的,这个人用EXCEL处理它们。
它说这个人用Excel处理它们。
它没有说
它没有这样说。
第一篇文章。如果你仔细阅读,这个文件可能与MT5没有任何关系。或以特定方式处理。
第一篇文章。如果你仔细阅读,这个文件可能与MT5没有关系。或以特定方式处理。
所以让他确定他从哪里得到的东西
也可以作为一个数组来读,我想。谢谢你对代码的分析。
我很难理解OOP,所以对它进行编辑对我来说是一种折磨。根据我的理解,这是关于负责阅读的类,在那里,整个文件被分割成字符串数组,然后,如果我想的话,我把这些字符串值转换成另一种类型,并在我的脚本中把它们放入int类型的数组。如果我理解正确的话,那么为了加快进程,我应该读取整个文件,弄清楚有多少行和列,每个单元格有多少个符号,然后立即选择数组大小?那么如何做呢?
我想了解一下,400兆字节是从哪里一下子拿出来的?我没理解错吧,内存被分配了,但并没有清除/送走之前分配的内存?
400Mb是3600万个空行的单元格,每个12字节,12*36=432。
要想被告知如何做得更好,请告诉我们你正在解决的问题。文件变化的频率和程度,是否每次都要从文件中读取,非空单元格的数量是否从一行到另一行是恒定的,所有单元格是否只包含整数。也许每周应该花9分钟,而且根本就不多--那么就没有必要改变什么。
一般来说,就 "去哪里才能更快 "而言,主要方向是声明一个有57个字段的结构,对应于整数值,并将其用于写入和读取(文件为二进制)。然后,78Mb将以比一秒钟更快的速度从磁盘直接读入内存,不需要定界符或字符串表示。为了调试的目的,把输出也保存为.csv。文件的大小 将立即决定这些结构的数组中的元素数量。
400MB是3600万个空行的单元格,每个12字节,12*36=432。
数学上的问题很清楚。
要想被告知如何做得更好,请告诉我们你正在解决的问题。文件变化的频率和程度,是否每次都需要从文件中读取所有内容,非空单元格的数量是否从一行到另一行是恒定的,所有单元格是否只包含整数。也许每周应该花9分钟,而且根本就不多--那么就没有必要改变什么。
这个任务是通用的,它是读取CSV格式的文件,因为这种格式对不同的程序是通用的,目前这些程序为我提供了数据。如果你具体指的是这个脚本,那么是的,你只需要阅读和计算一切,因为Excel因为公式而崩溃。单元格可以包含非整数(在这个例子中没有特别说明)。如果是每周一次,9分钟并不算多...然而,在其他方面,我需要通过优化器来处理这样的数据量,把文件传到 旁边,在代理的帮助下进行处理,然后得到csv格式的结果(当然,在这里我可以使用其他格式),并再次进行处理。这就是为什么我决定公开讨论这个问题,因为我想用MT5处理大型数据阵列。
一般来说,从 "去哪里才能更快 "的角度来看--主流:声明结构,其中57个字段对应于整数值,并将其用于写入和读取(文件为二进制)。然后,78Mb将以比一秒钟更快的速度从磁盘直接读入内存,不需要定界符或字符串表示。为了调试的目的,把输出也保存为.csv。文件的大小将立即决定这些结构的数组中的元素数量。
我甚至无法想象,这怎么可能做到?还是说,初始文件必须在特殊条件下生成?那么也许你可以制作CSV到二进制格式的转换器?
你能不能也看一下第二类,如何教它写出无限多的列?
WriteArray/Read速度很快,最大尺寸可达300mb,一切都非常快,不消耗RAM。
为什么有这么多的读/写代码,这一切都在4行中完成。
你能演示一下如何做到这一点吗?
所以让他决定他从哪里得到它
也可以作为一个数组来读,我想CSV是一种通用的文件格式,各种软件都支持它,包括与MO相关的软件。
此外,它是一个方便的文件,可以在不同的程序(脚本/顾问)MT5之间传输数据,而且不占用很多空间。
你能演示一下如何做到这一点吗?
试着像这样读取你的文件
https://www.mql5.com/ru/docs/files/filereadarray
我现在没有时间打开终端,也许明天吧)