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

58 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.

Categories

Find more on データのインポートとエクスポート in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!