2023-11-24

今、趣味プログラム書いてて、その過程で cat texts.txt | sort | uniq | grep -v '[0-9]' > texts_fix.txt とかやってるんだけど、これがまた遅い

1200万行ぐらいのファイルを使ってるんだが、何かもっと効率的なやり方はないもの

 

追記:

考えてくれた人ありがとう

結局、解決策としては--parallelと--buffer-sizeの数を増やした。

  • grepしてデータ絞ってからsort uniqしたら速くなるかもよ。

  • 1200万行のソート自体が重そうだからなあ sortコマンドはメモリ極小環境下でも使えるように一時ファイルに書き出してマージソートしてるらしいから メモリいっぱいあるなら--buffer-sizeオ...

  • シェルスクリプトよりはPythonのほうが数倍速いんじゃないか

    • シェルスクリプトは多分Cで書かれてるからそれなりに早い希ガス pythonはループが多い場合は遅くてしんどい

      • それはなくない? 昔色々比べてみたけど、コマンド一発で済むような場合を除けば、シェルスクリプトはループとか激遅だったと思う

        • ほら、これが証拠だ https://github.com/coreutils/coreutils/blob/master/src/sort.c https://github.com/coreutils/coreutils/blob/master/src/uniq.c https://git.savannah.gnu.org/cgit/grep.git/diff/src/grep.c

      • コマンドはCで書かれていても、汎用的な処理を連結してるわけじゃん。 別にpythonに限らないけど、プログラミング言語で同様の処理を書くならロジックに工夫の余地があるから速くでき...

        • いや、実行頻度が多くないからこそこのコマンドを使ってる。 それで実行も完了したので、やはりそれなりに効率性は高かったと思う。 ワイが実行完了するまでの数分間を待てなかった...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん