-> 06 { 09 / 27 }
AR のロード時間
ActiveRecord つかったコマンドラインツール作っても遅くて使えなさそうだよね、と思っているんだけど実測値は測ったことがないので測ってみた。
[2]$ time ruby -rlib/active_record -e '' ruby -rlib/active_record -e '' 0.27s user 0.07s system 16% cpu 2.044 total [2]$ time ruby -e '' ruby -e '' 0.00s user 0.00s system 78% cpu 0.005 total [2]$ time ruby -rlib/active_record -e '' ruby -rlib/active_record -e '' 0.27s user 0.04s system 99% cpu 0.310 total
遅ぇ…。一回目はメモリ確保周り(?)で時間かかってるみたいだけど、普通使うときは突然であって2秒はなぁ。二回目も 0.3 秒かかってる。DB にコネクションはらなくてこれだしなー。はったらクラスジェネレートでまた時間かかりそうだし。
ruby で schwartzian 変換
ああそっか、記述見かけないと思ったらクイックソートだから必要ないの、か?
require 'benchmark/runner' require 'digest/sha1' class SortBench < Benchmark::Runner def setup @ary = (1..10000).to_a.map{|i| i.to_s} end def normal @ary.sort_by {|i| Digest::SHA1.hexdigest(i) } end def schwartzian @ary.map {|i| [i, Digest::SHA1.hexdigest(i)] }.sort_by {|i| i.last}.map {|i| i.first} end end SortBench.run 10
結果
user system total real
schwartzian 0.840000 1.330000 2.170000 ( 2.168033)
normal 0.720000 0.870000 1.590000 ( 1.589423)
しゅなんとか変換かますと遅い。
cd で移動したディレクトリを screen のタイトルに表示
cd後lsのが流行ってるので僕も波に乗って設置だ!でもそれだけじゃ味気ないので screen に表示してどのディレクトリで作業してるのかわかりやすいように。
function chpwd() {
ls
if [ "$TERM" = "screen" ]; then
echo -n "^[k[`basename $PWD`]^[\\"
fi
}
これで screen の表示が
paprika 0 cpanp 1 v:functions 2 [public_html]
みたいにわかりやすいように。ちなみに v:functions は vim で functions ファイルを編集中、の意。設定は前も書いた気がするけど
if &term =~ "screen"
" screen Buffer 切り替えで screen にファイル名を表示
autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | silent! exe '!echo -n "^[kv:%^[\\"' | endif
endif
みたいな。
RakuAPI
なんといってもすげぇのが php のシリアライズ形式で返すインターフェイスがあるところ。JSON があるなら php シリアライズがあってもいいじゃない!という発想は思いつかなかった。
これによって今後
- Marshal.dump 形式 (for るば)
- Data::Dumper 形式 (for ぺるら)
などなどの API が乱立するのであった(USO
トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20060927
http://neta.ywcafe.net/000544.html
所詮データのアウトプット直前の構造は高速に取得できるでしょうから、アウトプット形式が様々な物に対応していて柔軟な方がよさそうですね。
'paragraphs'ってオプションがあるみたいですよ!
:h paragraphs
デフォルトは"IPLPPPQPP LIpplpipbp"だそうで。なんのこっちゃ・・・・
調べていじればできそうですね。
Enumerable#sort_byのマニュアルに載ってますが、sort_byは
map {|i| i.hoge }.sort {|a,b| a <=> b }.map {|i| i.hoge }
とほぼ同じ意味ですので(少し早い)後者のコードはあまり意味がないようです。
明示的にschwartzian transformを行なう際は、sort_byでやるよりはsortを使った方が余分な動作がない分早いのではないかと思われます。ただ基本的にはsort_by {|i| .. }で十分のようです。
http://www.ruby-lang.org/ja/man/?cmd=view;name=Enumerable
'paragraphs'はviからある古いオプションで、nroffのマクロを指定することしかできないようです。
http://d.hatena.ne.jp/parasporospa/20060722/1153564681