〜2015年4月下旬〜
sedと同じ方針でRubyも書き直してみると意外にもちょっと速くなった。
sed版とほとんど同じというのも面白い。
% time zcat access_log.nasa.gz| ruby -EASCII-8BIT -pe 'sub(%r|(.*\[(..)/(...)/(....):(..):(..):(..).*)|){$4+{"Jul"=>"07","Aug"=>"08"}[$3]+$2+" "+$5+$6+$7+" "+$1}' > access-ruby3.log zcat access_log.nasa.gz 3.57s user 0.18s system 5% cpu 1:09.17 total
月の変換だけsedにやらせるとさらに速くなる。
% time zcat access_log.nasa.gz| ruby -EASCII-8BIT -pe 'sub(%r|(.*\[(..)/(...)/(....):(..):(..):(..).*)|){$4+$3+$2+" "+$5+$6+$7+" "+$1}' |sed -r 's/^(....)Jul/\107/;s/^(....)Aug/\108/'> access-ruby3.log zcat access_log.nasa.gz 3.58s user 0.14s system 6% cpu 58.947 total ruby -EASCII-8BIT -pe 56.28s user 0.74s system 96% cpu 58.960 total sed -r 's/^(....)Jul/\107/;s/^(....)Aug/\108/' > access-ruby3.log 6.98s user 1.56s system 14% cpu 59.217 total
このあたりはマルチコアのおかげのようで、いい具合に分割できると高速化も期待できる。
いつまでやるんだという話だが、今日はawk高速化。
splitでやらなくても固定長なのでsubstrで十分。
というわけで比較してみる。
#! /bin/sh script1='BEGIN{h["Jul"]="07";h["Aug"]="08"}{split(substr($4,2,21),a,/[:\/]/);print a[3]h[a[2]]a[1],a[4]a[5]a[6],$0}' script2='BEGIN{h["Jul"]="07";h["Aug"]="08"}{print substr($4,9,4)h[substr($4,5,3)]substr($4,2,2),substr($4,14,2)substr($4,17,2)substr($4,20,2),$0}' x() { printf "%.4s %.5s: " "$1" "$3" zcat access_log.nasa.gz | /usr/bin/time -f '%E' $1 "$2" > out.log 2> time.log cat time.log } x gawk "$script1" split IFS=: read x time1 < time.log x gawk "$script2" substr IFS=: read x time2 < time.log echo "scale=2;$time1/$time2" | bc x mawk "$script1" split IFS=: read x time1 < time.log x mawk "$script2" substr IFS=: read x time2 < time.log echo "scale=2;$time1/$time2" | bc x "busybox awk" "$script1" split IFS=: read x time1 < time.log x "busybox awk" "$script2" substr IFS=: read x time2 < time.log echo "scale=2;$time1/$time2" | bc
これを実行するとやはりsubstrだけのほうが速い。
gawk split: 0:12.70 gawk subst: 0:07.19 1.76 mawk split: 0:05.68 mawk subst: 0:04.89 1.16 busy split: 0:23.64 busy subst: 0:18.95 1.24
gawkは1.76倍となぜかかなり高速化される。
速くても位置を指定するのが面倒なのが欠点。
もう1ヶ月も前に放送されたドレミファドン!を見た。
イントロクイズしか見てないが、誰も答えられないハレ晴れユカイが印象的だった。
アニメはアニメでも深夜アニメは別口なんだな。
紅蓮の弓矢も勘で答えて当たっちゃったって言ってたし。
例によってさくらのVPSのUbuntuを15.04に上げた。
サーバ版なのでいつものようにdo-release-upgradeで。
何事もなく完了。
世界一受けたい授業で斜めから覗き込むとドクロが見えるという絵画があると言ってたので、
さっそくぐぐって
ハンス・ホルバイン - Wikipediaを発見。
大使たちというタイトルらしい。
というわけでconvertで実際に変換してみる。
大元の画像は30000x29560で、200MB以上あるので注意。
そんなに要らないので800pxで。まあ、これでも大きいので適当に縮小する。
convertのdistortにAffineProjectionがあるのでこれを試す。
適当にパラメータを設定して、いい感じなところを探した結果がこれ。
% convert 800px-Hans_Holbein_the_Younger_-_The_Ambassadors_-_Google_Art_Project.jpg \ -resize 40% -matte -virtual-pixel Transparent \ +distort AffineProjection "0.5,1,0,2,0,0" +repage amb.jpg
やたらと縦長だけど一応出てきた。
サーバ版じゃなくてもdo-release-upgradeは可能なのでやらせてみた。
アップグレード自体はまったく問題なし。
再起動すると何かFailedと出て先に進まない。
これはどうしたもんかと、そろそろSolydXに移行しようと思っていたし、
別のNote PCでインストール用DVDを焼くことにした。
ISOイメージのダウンロードも時間がかかるよなあとか思ってるうちに、
なんとUbuntuのブートプロセスが先に進み出した。
すでに10分20分ぐらい経ってたと思うがいったい何をしていたのか?
まあ、結局問題なく立ち上がったようでよかった。
で、あまり変化ないんだろうなと思ってたら、微妙なところが変わっていた。
今まではフォーカスされたウィンドウのタイトルバーは色が変わってわかりやすかったが、
なぜかタイトルの文字とツールアイコンだけ色が変わる仕様になった。
これは非常にわかりにくい。Xubuntuだけ?
会社ではすでにSolydXにしちゃってるし、そんなことにはなってないし、
というわけでSolydXをダウンロード中。連休にでも試そう。
Cygwinもとうとうメジャーバージョンが2へ上がった。ちょっと感慨深い。
その割にはあまり目立った変化がないような?
ああ、テストリリースをやめてマイナーバージョンが奇数だったらテストリリースってことにしたのか。
そのためにメジャーを2に上げたという感じだな。
例の気になっていた選ばれたウィンドウのタイトルの色は、
SolydXでも同じように目立たない感じになっていて、
Ubuntuとか関係なく最新のXfce4の変更のようで。
じゃあ、Windows 7はどうだっけと確認してみると、
ちょっと色が濃くなるぐらいでこれもまたまったく目立たない。
Windows XPは無粋なほど色が濃くなっていた。
あれ、じゃこれって最近の潮流?
というか気づいてなかった時点でどうでもいいのかもしれない。
Ubuntu 15.04にしてからどうもだめなようで。
原因がさっぱりわからない。
とりあえずUMSでもいいか。