MT5 RAMメモリの容量不足、大容量ファイルの読み書きに問題がある。 - ページ 5

 
Maxim Dmitrievsky:

ということで、2次元の配列、行列です。書いてみてください。

多次元配列の 書き方、読み方の例を教えてください。理論的には明確なのですが、実装が明確でないのです。

 
Aleksey Vyazmikin:

多次元配列の 書き方、読み方の例を教えてください。理論的には明確なのですが、実装が不明確なのです。

一次元配列と同じように、WriteArray()で

 
Aleksey Vyazmikin:

クラスはMT4から3年使っているので快適ですね~便利ですが、くそ遅いです。

文字列を読むのは簡単ですが、それをすべて動く細胞構造にするのはもっと大変です。

クラスが使えないってどういうこと?していますし、それに、メタクオートの社員が書いた授業はそして、実際に人を雇い、お金を払い、完成品を期待していたのに、「遅くてもいいから...」と言われる。信じていたのに、メモリのやりすぎもあるのかーと憤慨しています。

このクラスは、少量のファイルを対象としたものです。誰が作ったクラスかは全く関係ない。さて、ファイルを読み込むには別のアプローチが必要なので、そのクラスはそのファイルを貧弱に扱います。

 
Roffild:

このクラスは、少量のファイルを対象としています。誰が作ったクラスであるかは全く関係ありません。今度は、ファイルを読むのに別のアプローチが必要なので、そのクラスはそのファイルをうまく扱えません。

それを永続させる。ファッキン、サンキュー。

 
Maxim Dmitrievsky:

一次元のものと同じように、WriteArray()を通して

例を見つけたので、試しに2つのファイルを書いてみます - 一般的な理解のためと、おそらく処理のスピードアップのためです。

ありがとうございます。

追記:一度に1つの配列しか書き込めないのは、もちろん不便だと理解しています。
 
Roffild:

このクラスは、少量のファイルを対象としたものです。誰が作ったクラスであるかは全く関係ありません。さて、ファイルを読み込むには別のアプローチが必要なので、そのクラスはそのファイルをうまく扱えません。

記憶が正しければ、すぐに「大きなファイルを扱う必要がある」と言い、例えば、100とは言わないまでも数十メガバイトという大きなファイルが渡されました(対応を見る必要があり、現在の形式では不便です)。

 
Aleksey Vyazmikin:

一般的な理解のためと、おそらく処理速度を上げるために、2つのファイルを書かなければならないでしょう。

ありがとうございます。

追記:一度に1つの配列しか書き込めないのは、もちろん不便だと理解しています。

とても便利です :)

 
Maxim Dmitrievsky:

とても便利)

データの種類 によって別のファイルを作らなければならないので、便利ではない。

 
Aleksey Vyazmikin:

データの種類 によって別のファイルを作らなければならないので、便利ではない。

まあ、散らばらないように同じディレクトリに置けばいいんですけどね。特に問題はないでしょう。専門家に対しては、いつもそうしているんです。早速、プログラム名/アカウント番号という ディレクトリを作成する で、その中にすべてのファイルを入れています。

 

メモリの再割り当ての頻度を少なくするために、まずは最小限の変更をすることをお勧めします。2行

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(n)ではなく、O(log(n,2))になるはずです。60万円ではなく、20万円。今はそれで十分かもしれませんね。