掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイルから配列データを動的配列への一括読み込み (ID:151243)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
動的配列への代入で時間を要する要因として、受け側に構造体構造の影響と分かってきました。 元々、 type RMTX_Data = Record data1 : Word; data2 : Single; data3 : Single; data4 : Byte; End; type RRGB = Record RGB : Array [ 1 .. 5 ] of RMTX_Data; End; type RMTX = Record MTX : Array of Array of Array of RRGB; End; この場合、ループさせるのは、MTXです。RGBが固定なら、(1) for k := 0 to Zmax - 1 do for j := 0 to Ymax - 1 do for i := 0 to Xmax - 1 do begin MTX[ i, j, k ].RGB[1].data3 := ptr^; inc( ptr ); end; となります。 サイズの定義も SetLength( MTX, 300, 300, 300 ); で済みます。 これを改変して、 type RMTX_Data = Record data1 : Array of Array of Array of Word; data2 : Array of Array of Array of Single; data3 : Array of Array of Array of Single; data4 : Array of Array of Array of Byte; End; type RMTX = Record MTX : RMTX_Data; End; とした場合、(RRGBも省く)(2) for k := 0 to Zmax - 1 do for j := 0 to Ymax - 1 do for i := 0 to Xmax - 1 do begin MTX.data3[ i, j, k ] := ptr^; inc( ptr ); end; サイズ定義は、RMTX_Dataの要素ごとに行なう必要があり、少々手間です。 SetLength( MTX.data3, 300, 300, 300); 然しながら、動作時間は、(2)の方が(1)より約半分で済んでいる様です。 個人的には(1)の方が好みですが、速度には替えられません。 配列の操作で高速化の常套手段などあるでしょうか? また、ふと疑問に思いましたが、例えば、動的配列と静的配列とで動作速度は大きく違いますか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.