性能改善

技術解説

10GBの2回目はどこで縮んだか — Full Spectrum④:前置できない正規表現が ripgrep の hot 13.54秒に対し uvp 0.73秒、ただし±N行の2語目の突き合わせは1.24倍の同等どまり

3GB で速くなった仕組みが、10GB でもそのまま効くとは限りません。 前の2回で入れた「行の骨格」と「ブロックの印」は、3GB の測定で決めた仕組みです。10GB・1億行で全体テストを流すと、2回目にまだ重い式が4つ…
技術解説

開かなくてよいブロックを先に知る「ブロックの印」と1MBのブロック — Full Spectrum③:素の検索で ripgrep の hot 0.31秒に対し uvp 0.17秒、ただしどこにでもある語では印を確かめる分だけ4%遅い

3GB の OpenStreetMap の XML を 1MB ずつに切ると 2,893 個のブロックになり、そのうち 東京 が入っているのは 910 個でした。 残りの約 7 割は、開く必要がありません。けれど「開かな…
技術解説

ヒットしない行のかたまりを読まずに飛ばす「行の骨格」 — Full Spectrum②:ripgrep の -E -v より hot で28.2倍、ただしどのブロックにもヒットがある式では同等どまり

9,224万行のうち、ヒットするのは1行でした。 3GB の OpenStreetMap の XML で ^ + uvf・uvp は私が作っている UwView の検索コマンドです(uvf は無料版、uvp は有料版 U…
技術解説

Shift-JIS・EUC-JP・UTF-16 を索引の中で UTF-8 にそろえた — Full Spectrum①:ripgrep の -E より2回目から5.4〜38.8倍、ただし1回目は ripgrep が1.2〜1.5倍速い

変換が毎回入っていました。 Shift-JIS の 3GB を探すと、ヒットした行を数える前に、3GB 分の文字コード変換が走ります。2回目も、3回目も、同じ変換です。 索引を持っているのに、なぜ毎回変換していたのか。そ…
技術解説

Rust の ripgrep に C# で追いつくまで — 巨大ファイルは205秒から同等へ、8.6万本は19倍の負けから同等へ、複雑な検索は uvp が ripgrep の1.07〜3.5倍

【追記 2026-10-16】いまの速さ — 複雑な検索は 1.07〜3.53倍から 1.22〜4.56倍に 本文の表は v1.7.3.7(2026年10月4〜5日)と試験版 uvp 1.8.1.3(10月6日)の値です…
技術解説

ripgrep と同じ1コマンドで、12本・7形式・zip・pbf を探せるようにしました — Wide Field⑮(最終回):無料版は同等のまま、uvp はカーネル8.6万本で4.0倍、1.5倍を超える負けは2種類

2種類だけ残りました。 14回かけて、ripgrep に負けている場所を全部数え直したら、1.5倍を超える負けは2種類でした。どちらも有料版 uvp が索引を持つ代価です。 探せる入口を7つ増やしておいて、速さの負けが2…
技術解説

ripgrep に3.7倍・klogg に1.9倍負けていた自作ビューアが並びました — 改善記⑬(最終回):50GB の検索 205秒→51.70秒、開く 100.6秒→50.44秒

6%、まだ負けています。 50GB のログを1問目に検索すると、ripgrep が 54.9〜55.8秒、こちらが 59.0秒。この連載を始めた時点では、205秒 対 56秒でした。 3.7倍の負けを 6% まで詰めて、…