エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
巨大なテキストファイルを高速に「シャッフル」するrubyワンライナ - 中野智文
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
巨大なテキストファイルを高速に「シャッフル」するrubyワンライナ - 中野智文
巨大なテキストファイル(例えば500M、すみません、それほど巨大ではありません。)をランダムソート(... 巨大なテキストファイル(例えば500M、すみません、それほど巨大ではありません。)をランダムソート(例えばsort -R)しようとするとソートのアルゴリズムが走るためか、非常に時間がかかる。ところがランダムソートは厳密にはソートする必要がないはずである。そこでバケットソートのバケツをランダムに行うことを提案する。その方法は、複数の一時ファイルを作成し、それらのファイルにランダムに格納し、それを結合することで、トランプのような「シャッフル」を行うことにする。それが下記のrubyワンライナ。 ruby -r tempfile -ne 'BEGIN{R=1000;$ta=Array.new(R){|i|Tempfile.open(i)}}; $ta[rand(R)].print $_; END{$ta.each{|t|t.close;print open(t.path).read}}' R=10