掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイルから配列データを動的配列への一括読み込み (ID:151232)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
AAAAAさん、 後述頂けたTArray3の方ですが、ポインター領域(GetMem)から配列データを行毎に取り出すわけではなく、要素ごとに値を書き込んだり取り出したりするのですね。 現在、行毎にファイルから読み込んだポインター領域から要素ごとにポインターで配列データを取り出していて、(300x300x300)のデータで約8~9秒掛かっています。これを1~2秒程度まで短縮したいのですが、 今、I/O(外部)アクセスを伴いますが、ファイルからの一括読み込みで約1秒で完了しています。 I/O(外部)アクセスを伴わない(メモリー操作のみ)要素ごとにポインター領域から取り出しが8~9秒ととても遅く感じます。 ファイルからの一括読み出し: ptr2 : PWord; i, j, k : Word; begin GetMem( ptr2, マトリックスサイズ ); cnt := fs.Read( ptr2^, マトリックスサイズ); // ファイルから一括呼び出し ここは早い for k := 0 to Z次元サイズ - 1 do for j := 0 to Y次元サイズ - 1 do for i := 0 to X次元サイズ - 1 do begin MTX[ i, j, k ] := ptr2^; // シーケンシャルに取り出し、要素ごとに代入 ここの3重ループが遅い inc( ptr2 ); end; end; この手法では8~9秒掛かってしまいます。 これまででファイルから行毎の読み出しでは、やはり1~2秒で完了出来ました。 各要素ごとに読み出すと、メモリー操作だけでも、遅くなってしまう様です。 ポインター領域から行毎に読み出し、動的配列に書き込むにはどの様にすると良いでしょう?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.