Scilabで大容量のCSV(テキスト)ファイルを読み込む2

Scilab 5.4.0から、CSVの新しい関数が追加されました。

csvRead
csvWrite

大容量でも高速で動作するとのことで、今後はこの関数を利用する方がよさそうです。

速度を比較してみました。なおfscanfMatはカンマ区切りのファイルを読み込めないので対象から外しました。


//CSV書き出し
a=rand(10000,2);
deletefile('test.csv');
csvWrite(a,'test.csv');

//csvRead
timer();
b_csvread=csvRead('test.csv');
t=timer();
printf("csvRead:%f\n",t);

//read
timer();
b_read=read('test.csv',-1,2);
t=timer();if max(abs(b_csvread-b_read))==0 then msg="OK"; else msg="ERR"; end
printf("read:%f %s\n",t,msg);

//read_csv(evstr)
timer();
b_read_csv_=read_csv('test.csv');
t=timer();
printf("read_csv:%f",t);
timer();
b_read_csv=evstr(b_read_csv_);
t=timer();if max(abs(b_csvread-b_read_csv))==0 then msg="OK"; else msg="ERR"; end
printf("evstr:%f %s\n",t,msg);

//mfscanf
timer();
fp=mopen('test.csv');
b_mfscanf=mfscanf(-1,fp,'%lf,%lf');
mclose(fp);
t=timer();if max(abs(b_csvread-b_mfscanf))==0 then msg="OK"; else msg="ERR"; end
printf("mfscanf:%f %s\n",t,msg);


実行結果

csvRead:0.374402
read:0.140401 OK
read_csv:0.156001 evstr:11.060471 OK
mfscanf:0.062400 OK


早い順に書きなおすと
 1. mfscanf 0.06s
 2. read 0.14s
 3. csvRead 0.37s
 4. read_csv(evstr) 11.21s

以前と結果が変っていますね。全体に高速化しています。
csvReadは断トツで高速というわけではないですが、実用的な速度ですし、機能も多いのでオススメです。

スポンサーサイト

コメントの投稿

非公開コメント

突然の投稿失礼します。

突然の投稿お許しください。
急遽,どうしてもscilabを使う必要がありまして,いろいろと調べておりましたところ貴方のサイトに行き着きました。
どれを探しても,全く分からず,立ち往生しております。もしよろしければでいいのですが,アドバイスをいただけませんでしょうか?

csvファイル(エクセルデータ)を読み込ませて(loadmatfile),プログラミングしているのですが,ついこの前まで,読み込めたcsvファイルが,ほかのところを編集していたところ,突然読み込めなくなりました。
「ファイル○○.csvを開けません」といった症状です。

ファイルが開けないので,そのあとの計算されない状態です。
原因として何があげられますでしょうか?
尚,csvのエクセルファイルは,scilabのデータと同じところに保存してあります。



もし,よろしければご教授いただけませんでしょうか?
失礼しました。

それだけの情報ではなんとも・・・

具体的なコードを示していただけないと難しいです。
読み込んでいる部分だけでも示してもらえませんか。

エラーも実際のエラーをコピーしてください。

とりあえず試せることとしては
 ・Scilabを再起動する
 ・OSを指起動する
 ・ScilabのConsoleでpwdと入力し、ファイルのある場所になっているか確認する
といったところでしょうか

ありがとうございました。

お返事ありがとうございました。遅くなりまして申しわけございません。
結論からしますと,計算プログラムのファイル自体がscilabのアプリケーションで「既定」として開く設定になっていなかったことが問題でした。(説明がうまくできずすみません。)
要は,csvファイルとともに同フォルダに入ってある計算プログラムのアイコンがscilabマークになっていなかったということでした。
お騒がせいたしました。
また,困った際にお力をお貸しいただければ幸いです。
全記事表示リンク

全ての記事を表示する

最新記事
最新コメント
最新トラックバック
カテゴリ
検索フォーム
RSSリンクの表示
リンク