Just another Ruby porter,

〜2015年4月下旬〜


<Older(,) | Newer(.)> | Recent(/)>> | RDF

2015-04-21 (Tue)

準備1 もう一度Ruby編

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

このあたりはマルチコアのおかげのようで、いい具合に分割できると高速化も期待できる。


2015-04-22 (Wed)

準備1 awk高速化編

いつまでやるんだという話だが、今日は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倍となぜかかなり高速化される。
速くても位置を指定するのが面倒なのが欠点。


2015-04-23 (Thu)

クイズドレミファドン!

もう1ヶ月も前に放送されたドレミファドン!を見た。
イントロクイズしか見てないが、誰も答えられないハレ晴れユカイが印象的だった。
アニメはアニメでも深夜アニメは別口なんだな。
紅蓮の弓矢も勘で答えて当たっちゃったって言ってたし。


2015-04-24 (Fri)

Ubuntu 15.04

例によってさくらのVPSのUbuntuを15.04に上げた。
サーバ版なのでいつものようにdo-release-upgradeで。
何事もなく完了。


2015-04-25 (Sat)

大使たち

世界一受けたい授業で斜めから覗き込むとドクロが見えるという絵画があると言ってたので、
さっそくぐぐって ハンス・ホルバイン - 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

やたらと縦長だけど一応出てきた。


2015-04-26 (Sun)

家のPCもUbuntu 15.04へ

サーバ版じゃなくてもdo-release-upgradeは可能なのでやらせてみた。
アップグレード自体はまったく問題なし。
再起動すると何かFailedと出て先に進まない。
これはどうしたもんかと、そろそろSolydXに移行しようと思っていたし、
別のNote PCでインストール用DVDを焼くことにした。
ISOイメージのダウンロードも時間がかかるよなあとか思ってるうちに、
なんとUbuntuのブートプロセスが先に進み出した。
すでに10分20分ぐらい経ってたと思うがいったい何をしていたのか?
まあ、結局問題なく立ち上がったようでよかった。

で、あまり変化ないんだろうなと思ってたら、微妙なところが変わっていた。
今まではフォーカスされたウィンドウのタイトルバーは色が変わってわかりやすかったが、
なぜかタイトルの文字とツールアイコンだけ色が変わる仕様になった。
これは非常にわかりにくい。Xubuntuだけ?

会社ではすでにSolydXにしちゃってるし、そんなことにはなってないし、
というわけでSolydXをダウンロード中。連休にでも試そう。


2015-04-27 (Mon)

Updated: Cygwin 2.0.0-1

Cygwinもとうとうメジャーバージョンが2へ上がった。ちょっと感慨深い。
その割にはあまり目立った変化がないような?
ああ、テストリリースをやめてマイナーバージョンが奇数だったらテストリリースってことにしたのか。
そのためにメジャーを2に上げたという感じだな。


2015-04-28 (Tue)

タイトルの色

例の気になっていた選ばれたウィンドウのタイトルの色は、
SolydXでも同じように目立たない感じになっていて、
Ubuntuとか関係なく最新のXfce4の変更のようで。
じゃあ、Windows 7はどうだっけと確認してみると、
ちょっと色が濃くなるぐらいでこれもまたまったく目立たない。
Windows XPは無粋なほど色が濃くなっていた。
あれ、じゃこれって最近の潮流?
というか気づいてなかった時点でどうでもいいのかもしれない。


2015-04-29 (Wed)

MediatombがPS3で認識されない

Ubuntu 15.04にしてからどうもだめなようで。
原因がさっぱりわからない。
とりあえずUMSでもいいか。


<Older(,) | Newer(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!