Rubyでは、巨大なテキストファイルを読み込むのに最も効率的な方法は何ですか? 10 の順で、89バイト/行。 1つの方法は他の方法よりも著しく優れていますか?Rubyで最も効率的な入力方法
4
A
答えて
4
テキストファイルを読み込むための良い方法を知るために、少し前にベンチマークを行いました。最も速いのは、テキストブロックで読み込み、String.linesを使用してそれらを反復処理することでした。
IO.foreach(ARGV.shift) do |li|
print li
end
time ruby test.rb root.mbox > /dev/null
#
# real 0m3.949s
# user 0m3.709s
# sys 0m0.182s
私はタイミングの画面I/Oを削除するには/ dev/nullにそれをダンプ:
ベースラインとして188593869バイトでテキストファイルを読み込みます。代わりに、ライン・バイ・ライン専用の読書の
、行を反復処理し、その後、大きな塊でそれをロードします。
File.read(ARGV.shift).lines do |l|
print l
end
time ruby test.rb root.mbox > /dev/null
real 0m3.492s
user 0m3.281s
sys 0m0.209s
0.5秒の節約です。また、188MBのデータを吸ってしまいました。ファイルが大きいとうまく調整できません。良いことは、私がしたファイル全体を、read()
を使ってロードするか、読み込みサイズを制限するように伝えることです。
ここではあなたの参照のためのテキストファイルのwc
からクリーンアップの出力です:
lines: 2,465,369
words: 26,466,463
bytes: 188,593,869
+0
Windows上の 'File.read'は[非常に遅いです](http://phrogz.net/slow-file-reads-on-windows-ruby-1.9)です。バイナリの読み込みモードを強制するために 'File.open( 'foo'、 'rb'、&read)を使うのが良いでしょう(しかし' \ r \ n 'のペアを適切に処理する必要があります)。 – Phrogz
関連する問題
- 1. Rubyでループを実装する最もスマートで最も効率的な方法
- 2. 最も効率的な方法
- 3. 最も効率的な方法のハンドラ
- 4. 最も効率的なマルチレベルコメントシステム
- 5. 最も効率的なバブルソートメカニズム
- 6. JSONをC#で解析する最も効率的な方法
- 7. 最も効率的な方法でカスタムオブジェクトのループスルーNSMutableArray
- 8. GCDでファイルをコピーする最も効率的な方法は?
- 9. LIMITの最も効率的な方法はJOINですか?
- 10. Linuxビデオレコーダーで最も効率的なファイル書き込み方法
- 11. ウェブサイト上でコンテンツをスケジュールする最も効率的な方法
- 12. Cでキューからデキューする最も効率的な方法#
- 13. タイムスタンプでデータを取得する最も効率的な方法
- 14. SQLで最も効率的な検索方法は?
- 15. MySQLでフルテキスト検索を行う最も効率的な方法
- 16. Javaで入力を行う最も効率的な方法はどれですか?
- 17. もっと効率的な方法.php
- 18. もっと効率的な方法は
- 19. 最も効率的な方法は、OutputStreamの
- 20. BlackListを実装する最も効率的な方法
- 21. ファイルを読む最も効率的な方法
- 22. Eigen行列をループする最も効率的な方法
- 23. android.net.wifi.ScanResultをComparableにする最も効率的な方法は?
- 24. ファイルを検索する最も効率的な方法
- 25. トークンの単語を数える最も効率的な方法
- 26. ナビバを使う最も効率的な方法は?
- 27. ラジアルプロファイルを計算する最も効率的な方法
- 28. アクティビティログを作成する最も効率的な方法
- 29. 最も効率的なUITableViewへの移植方法
- 30. 親/子を処理する最も効率的な方法
は、あなたがラインごと、あるいはどのように処理されるように意味ですか? – tokland
はい、行ごと – mbm