2006年12月28日(木) いい天気。事務シゴトを淡々と。 [同日]
● [run] 最短コース 25分19秒 3.14マイル 8.1分/マイル
久しぶりに走ろうとしたらジョギングパンツとTシャツを忘れてきたことに気づいたので、普通の短パンで。やっぱり足の動きが制限される感じだったけれど、タイムは悪くなかったみたい。
● [Ruby] 計算時間の謎
ささださんが、Arrayの総和を求めるのにかかる時間がo(N)以上になってそうだ、とお
っしゃっている。なんだか楽しそうだったので、事務シゴトの裏で測定してみました。
全体を見ると確かに放物線のようですが、僕は直線がつながってるのかなあ、という印象を受けました。配列がCPUのキャッシュに入るか入らないかとか、配列のインデックスがFixnumかBignumか、とかで直線の傾きが変化する、という説はいかがでしょう?(ってここに書いてもな。)
測定は、ささださんのRubyスクリプトをbenchmark.rbとして下記のシェルスクリプトから起動しました。
#!/bin/sh
echo \# `ruby -v`
echo \# `uname -srm`
echo \#n time
power=1
njobs=3
while [ 1 ]; do
n=`echo $power | awk '{printf("%.0f", 2**$1)}'`
power=`echo $power | awk '{print($1+0.2)}'`
t=`ruby benchmark.rb $n`
echo $n $t
done
測定は、ruby 1.8.3 (2005-09-21) [i686-linux](古っ!)とLinux 2.6.12-4msmp i686のもの。実メモリ1Gバイト、Xeon 2.8GHz×2、HTありでのものです。
● やっぱり最新表示の時はvolatile.tdrを読んだ結果か、そのキャッシュの残りしか@refererに入らないみたいだ。なんでだろう…。(追記) 最新表示のイニシャライザが特別製のようです。最新表示の場合はプラグインの中で一日ごとのリファラを消して読み直すようにしたらリンク元を表示できるようになりましたが…はたして副作用がないかどうか。(また追記) いや、最新表示で誰かが自分の日記にリンクをしてくれたのを知りたいので、volatile.tdr だけが表示されるのがいいんだ。
脳味噌から汁が出るくらい考える。こともある。
最近のツッコまれどころ