csvファイルの読み込みを速くする方法

22 views (last 30 days)
Takao
Takao on 13 Oct 2020
Edited: Hiroyuki Hishida on 15 Oct 2020
現在、1ファイル800MBほどあるテキストデータを読み込む作業をしています。
当然ながら、読み込みに掛かる時間が長く、1ファイル90秒ほど掛かっています。
この読み込み速度を速くする方法がないものでしょうか。
テキストデータの内容:約20,000,000行×8変数のカンマ区切り時系列データ
読み取りに使用している関数:readtimetable
(datastore/readやtextscanを使っての分割読み込みはかえって遅くなる結果となりました。)
他のプログラム言語ですと、マルチスレッドで処理することで速くなるケースがあるようです。
matlabでもParallel Computing ToolBoxを使うと速くできたりするものでしょうか。

Answers (1)

Hiroyuki Hishida
Hiroyuki Hishida on 14 Oct 2020
Edited: Hiroyuki Hishida on 14 Oct 2020
こんにちは、
もし、同じファイルの読みこみでお困りであれば、mat化を試していただくのはいかがでしょうか?
matファイルをつくるために、一度はreadtableする必要ありますが、そのワークスペース変数をmat化しておけば、次回以降はreadtableではなくloadすることになります。
https://jp.mathworks.com/help/matlab/ref/save.html
いかがでしょうか?
菱田
  2 Comments
Takao
Takao on 15 Oct 2020
菱田様
ご回答ありがとうございます。
mat化を試してみました。恐ろしく読み込みが速くなりました。
csvファイルの読み込み ⇒ 約90秒
matファイルの読み込み ⇒ 約7秒
(tic/tocで計測)
matファイルを作るのに時間は掛かりますが、その作業はプログラムで自動化しようと思います。
解決しそうです。ありがとうございました。
Hiroyuki Hishida
Hiroyuki Hishida on 15 Oct 2020
Edited: Hiroyuki Hishida on 15 Oct 2020
よかったです。 matファイルの設定もあわせてご確認いただければと思います。
https://jp.mathworks.com/help/matlab/import_export/mat-file-versions.html
今後ともよろしくお願いします。
菱田

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!