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

 
Maxim Dmitrievsky:

所以它是一个二维数组,一个矩阵。写吧。

你能给我看一个关于如何写和读多维数 组的例子吗?这在理论上是清楚的,但实施起来并不清楚。

 
Aleksey Vyazmikin:

你能给我看一个关于如何写和读多维数 组的例子吗?这在理论上是清楚的,但实施起来却不清楚。

就像一维数组一样,用WriteArray()函数

 
Aleksey Vyazmikin:

我使用类很舒服,从MT4开始,我已经用了3年了--它很方便,但该死的,它很慢。

读懂一个字符串很容易,但把它全部变成一个工作的细胞结构就难多了。

你说我不能使用班级是什么意思?我是这样想的,另外,元气满满的员工写了班。然后,我真的雇了一个人,付了钱,并期望得到一个成品,但有人告诉我,慢一点也没关系......。我相信他们,但现在我也有了记忆的过度--我很气愤。

这个班是为小文件设计的。谁创建了这个班级一点都不重要。现在我们需要一种不同的方法来读取文件,所以该类对该文件的处理很差。

 
Roffild:

这个班是为小文件设计的。谁创建了这个班级一点都不重要。现在你需要一个不同的方法来读取文件,所以那个类并不能很好地处理这个文件。

我将使它永久化。操之过急,谢谢你。

 
Maxim Dmitrievsky:

就像一维的一样,通过WriteArray()来实现。

找到了一个例子,我得试试,我得写两个文件--为了普遍理解,可能是为了加快处理速度。

谢谢你。

补充:据我所知,你一次只能写1个数组,当然这不是很方便。
 
Roffild:

这个班是为小文件设计的。谁创建了这个班级一点都不重要。现在你需要一个不同的方法来读取文件,所以那个类并不能很好地处理这个文件。

如果我没记错的话,我立即说我们需要处理大文件,例如,给了一个大文件--几十兆,甚至一百兆(我们需要观看通信,而在目前的格式下,不方便做)。

 
Aleksey Vyazmikin:

找到了一个例子,必须尝试一下,将不得不写两个文件--为了一般的理解,也可能是为了加快处理速度。

谢谢你。

补充:据我所知,你一次只能写1个数组,当然这不是很方便。

非常方便 :)

 
Maxim Dmitrievsky:

非常方便 :)

不方便,因为你必须为不同类型的数据 创建一个单独的文件。

 
Aleksey Vyazmikin:

不方便,因为你必须为不同类型的数据 创建一个单独的文件。

那么,你可以把它放在同一个目录下,这样就不会分散了。你不会有任何问题。这就是我对专家的一贯做法。我立即创建了一个名为程序名称/账户号码 的目录 我把所有的文件都放在里面。

 

我建议先做一个最小的改变,这样就可以减少内存重新分配的频率。两条线

m_total_rows++;
ArrayResize(m_cells,m_total_rows*m_total_columns,10000)。

bool CSVReader::AddData(string data_str,bool header) 中,替换为

m_total_rows++;
if (m_total_rows*m_total_columns>ArraySize(m_cells))ArrayResize(m_cells,2*m_total_rows*m_total_columns)。

拷贝的内存重新分配的数量应该变成O(log(n,2))而不是O(n)。20,而不是60万。也许现在对你来说这就够了。