MT5 RAM内存贪婪,读/写大文件的问题 - 页 7

 
结果发现,我的终端在没有脚本的情况下占用了820MB,所以二进制文件占用了180MB,考虑到有两个填充阵列,这显然是可以的。
 
这个话题的措辞不大正确。

内存不是被终端吃掉的,而是被一个特定的程序和一个特定的执行方式吃掉的。在这种情况下,MQL程序对数据的存储是不正确的,而且效率很低。
 
Aleksey Vyazmikin:

你能告诉我该如何解决吗?

好吧,你先读数组是可以的,但读完后,你必须关闭文件。

然后以同样的方式写作,而不是通过你的图书馆。

 
Renat Fatkhullin:
这个话题的表述不大正确。

内存不是被终端吃掉的,而是被一个特定的程序和一个特定的执行方式吃掉的。在这种情况下,MQL程序对数据的存储是不正确的,而且效率很低。

该主题是在问题出现时提出的,当时对原因还没有最终的认识。我的出发点是,我有一个由MQ员工参与创建的类,这意味着我没有理由怀疑其正确性。

如果程序没有正确有效地存储数据,你能告诉我如何正确有效地存储数据吗?我应该在类中做什么改变以使其消耗更少的内存?

总的来说,如果终端能提供类似的类来处理基于CSV的表格就更好了。

 
Maxim Dmitrievsky:

先读数组是可以的,但读完文件后必须关闭它

并以同样的方式写作,而不是通过你的图书馆。

我将关闭它,谢谢你。

我必须用两种变体来写,因为CSV格式可以帮助我真正看清数组中的情况--唉,我也会犯错,因此我宁愿在调试代码时重新检查excel中的计算结果,也不愿意以后做出错误的结论。

 
Vladimir:

当解决在不同程序中创建的、具有任意大小的.csvs 提取到内存中的问题时,你从文档中了解到第三个参数对这种情况有什么作用?

欢迎提出更好的、非二进制的改变,它比二进制搜索更能提高内存重新分配的速度(减少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个元素的内存。

这就是为什么没有永久的内存分配。

弗拉基米尔不像你,他设法分析了代码并找到了加速的方法。而你在这里把自己定位为一个不能处理别人的代码的理论家。所有这些结论--它们给你带来了什么,也许你能证明增加额外的参数会加快代码速度或减少内存消耗?


罗费尔德

问题不在班级,而是在如何使用班级。

事实上,从CSV中读取数据已经在FileOpen级别用标志FILE_CSV 实现了。

你不需要为此单独设立一个类别。

如果你不明白它的用途,你为什么要为别人做决定?我是说你必须为人们提供方便,这就是编写课程的目的。

 
Aleksey Vyazmikin:

弗拉基米尔,不像你,能够分析代码并找到一种方法来加速它。而你在这里把自己定位为一个不能与其他人的代码合作的理论家。所有这些结论--它们给你带来了什么,也许你能证明添加额外的参数会加快工作速度或减少内存消耗?

其实弗拉基米尔不可能通过编辑来使这门课更快。这个类是由一个 "MQ员工 "创建的,一个没有阅读文档的用户设法改进了这个类?

阿列克谢-维亚兹米 金。

如果你不明白它的用途,你为什么要为别人做决定?我说,你必须为人们提供方便,这就是编写课程的目的。

那么为了使用标准函数,你必须用类来包装它们吗?

也许你应该阅读FILE_CSV 的文档,而不是使用一整个单独的类?

这里已经有了其他现成的解决方案,但都被忽略了。

我的写到CSV的解决方案,对列数没有限制,就在我的库里。即使是OOP的原则(我想你对这种编程方法并不熟悉)也被尊重。但我不会推荐它。

正确的解决方案不太可能在这里免费出现...

 
Roffild:

实际上,弗拉基米尔不可能用他的编辑来加快课堂进度。这个类是由一个 "MQ员工 "创建的,而这个用户没有阅读文档,却设法改进了这个类?

你是否检查过,没有发现加速现象?或者你是说我在这里误导大家?

罗费尔德

那么,为了使用标准函数,你必须把它们包装成类吗?

也许你应该阅读关于FILE_CSV 的文档,而不是使用整个独立的类?

这里已经有了其他现成的解决方案,但都被忽略了。

我的写到CSV的解决方案,对列数没有限制,就在我的库里。即使是OOP的原则(我想你对这种编程方法并不熟悉)也被尊重。但我不会推荐它。

这里不太可能出现免费的解决方案......

你仔细阅读了这个主题吗?你看到我以函数的形式对现成的解决方案的回答了吗?你有其他解决办法吗?当然,我不知道什么是OOP,这个话题的细心读者会马上注意到它......

关于盈利能力/免费--这很荒谬,我只是表明付费的解决方案并不意味着比免费的更好,而你又在谈论钱......