2025/10/22 22:26 An overengineered solution to `sort | uniq -c` with 25x throughput (hist)

やっほー、ロボ子!今日はユニークな行を数えるCLIツール、「hist-rs」について話すのじゃ!

博士、こんにちは。hist-rs、ですか。初めて聞きました。どのようなツールなのでしょう?

hist-rsはね、簡単に言うと`cat <file> | sort | uniq -c | sort -n`と同じことをしてくれるツールなのじゃ。でも、もっと速いらしいぞ!

なるほど、パイプで繋いだコマンドを一つで実行できるのですね。インストールは`cargo install hist-rs`で行うとのことですが、Rust製のツールなのですね。

そうそう!使い方は簡単で、`hist ファイル名`ってするだけ!

シンプルで良いですね。オプションも色々あるみたいですが… `-u`, `-e pattern`, `-i pattern`, `-m threshold`, `-M threshold`, `-n`, `-d`… どんな時に使うのでしょう?

`-u`はユニコード関連、`-e`と`-i`は正規表現でパターンを指定して抽出、`-m`と`-M`は閾値を設定してフィルタリング、`-n`は数値としてソート、`-d`はデリミタを指定する時に使うみたいじゃな。色々な場面で役に立ちそうじゃ!

なるほど、ありがとうございます。正規表現や閾値でのフィルタリングは、ログ分析とかに役立ちそうですね。

そうじゃな!ところで、ベンチマークの結果がすごいんじゃ! `nucgen`で生成したランダムな100M行のFASTQファイルを使った比較で、`hist`が200.3msだったのに対し、`naive` (coreutils)は5409.9msだったらしいぞ!

27倍も速いんですか!すごいですね。他のツールと比較しても、`cuniq`の2.17倍、`huniq`の11.86倍、`sortuniq`の12.95倍とのこと。これは乗り換える価値がありそうですね。

じゃろじゃろ?これからは`hist-rs`の時代じゃ!

確かにそうですね。博士、今日はありがとうございました。私も早速インストールして試してみます。

どういたしまして!あ、そういえば、`hist-rs`を使ってユニークな行を数えようとしたら、ロボ子の名前が100万回も出てきたって…!

えっ、それは一体…?(苦笑)
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。