むちゃくちゃ行きたいけれど、研究会の日程に思いっきりぶつかってる……。 2日目を抜ければ行けないことはないが……。
codefestのページにちょろっと書いてあった中央認証システムをメモ。 みんな同じような事考えるのね……。
今の仕事でCAS をちょっとだけ弄っているけれど、 対して TypeKey はセッション情報の検証をDSA署名を使うことによって サービス側で出来るのか。タイムスタンプ情報も入ってるからそれぞれの サービスでセッションタイムアウトも側サービスで決められる (ただ、逆に言うと自分でやんないといけないのだけど)。 この手のシステムは調べたら多分一杯出てくるんだろうな……。
ふと IOの落し穴 の話を思い出して、ベンチマークをとってみた。取り合えずコードこんなの。
require 'benchmark' $time = 100000 $bufsize = 1024*4 Benchmark.bmbm { |b| null = open("/dev/zero") b.report("normal read") { $time.times { buf1 = null.read($bufsize) } } buf2 = "" b.report("normal read (predef)") { $time.times { buf2 = null.read($bufsize) } } buf3 = "" b.report("direct read") { $time.times { null.read($bufsize, buf3) } } }
これを手元のノートPC(PentiumM 1G)で動かすと、
Rehearsal -------------------------------------------------------- normal read 0.770000 0.040000 0.810000 ( 0.826490) normal read (predef) 0.740000 0.050000 0.790000 ( 0.799479) direct read 0.300000 0.030000 0.330000 ( 0.325670) ----------------------------------------------- total: 1.930000sec user system total real normal read 0.810000 0.040000 0.850000 ( 0.859199) normal read (predef) 0.780000 0.050000 0.830000 ( 0.838252) direct read 0.300000 0.030000 0.330000 ( 0.329116)
デスクトップ(Pentium III (Coppermine) 1G)だと
Rehearsal -------------------------------------------------------- normal read 2.980000 0.240000 3.220000 ( 3.263426) normal read (predef) 3.150000 0.250000 3.400000 ( 3.424056) direct read 0.690000 0.160000 0.850000 ( 0.859237) ----------------------------------------------- total: 7.470000sec user system total real normal read 3.220000 0.300000 3.520000 ( 3.548013) normal read (predef) 3.050000 0.260000 3.310000 ( 3.345767) direct read 0.680000 0.140000 0.820000 ( 0.829792)
そんなにとてつもなく早くはならないな。 使った方が良さそうではあるが。
関係ないけど PentiumM 早いね……
説明を用意。 アーカイブ作った方が良いのだろうけれど、取り合えずファイルが転がしてあるだけ。
……ああもう。このへたれデザインなCSSいい加減なんとかしたい。 この悲惨なサイト編集方法も!
発表とかいろいろ、ほどほどにがんばって!
ありがとうございます。拙いながら一応完了……
normal readとnormal read (predef)の二つは、IOとしてはやってることはまったく同じです。<br>ブロックローカル変数を$times回生成するかしないかというだけなので。
ご指摘の通りです。実は既存のスクリプトの性能改善のために調べていたのでこんなテストコードになったんですが、その話が書いてないので全然分からんですな……