さまざまな処理を awk で行ってみる


Go deh!: Wide Finder on the command lineの最初に書かれているようなパイプ処理を awk で組み込んでいった場合に、パフォーマンスがどのくらい向上するかについて試したもののようです。

grep + awk + sort + uniq + sort -n + tail という何となくやってしまいそうなパイプ処理なのですが、意外に awk 単独でも高速なものです。
時間のかかる sort は gawk の asort() が使われています。

AWKを256倍使うための本 (Ascii 256倍)にも書かれていたと思いますが、少し前の Ver. の gawk なら連接が遅かったので、sprintf() の方がさらにパフォーマンスが向上しますが、最近は連接の方が高速な場合もあります。

元ネタになっているSome Notes on Tim Bray's Wide Finder Benchmarkでは Python で処理を行った場合について書かれてあり、スレッドの処理など Python ならではの高速化について書かれています。

AWKを256倍使うための本 (Ascii 256倍)

AWKを256倍使うための本 (Ascii 256倍)