taraiまわしにかかる時間のメモ
tarai まわし関数を何回か動かしてみた。
tarai まわし関数は x y z の間の差分だけで処理時間が変わるはず、
(defun tak (x y z) (if (<= x y) y (tak (tak (1- x) y z) (tak (1- y) z x) (tak (1- z) x y)))) (compile 'tak) (time (tak 2 1 0))
xとy、yとzの間をnになるようにして何回か動かしてみた。
例えば、n=1ならx=2、y=1、z=1のようになっています。
これは実時間(s)で、最後に最大値をのぞいて平均をだしてみました。
n,test1,test2,test3,test4,test5,test6,ave(except,max) 0,0.000012,0.000013,0.000013,0.000012,0.000013,0.000013,0.000012 1,0.000016,0.000015,0.000015,0.000016,0.000015,0.000015,0.000015 2,0.000023,0.000023,0.000023,0.000023,0.000023,0.000023,0.000023 3,0.000155,0.000118,0.000118,0.000118,0.000122,0.000118,0.000119 4,0.002486,0.001960,0.001884,0.001920,0.001905,0.001886,0.001911 5,0.060160,0.043363,0.043662,0.043502,0.044224,0.043481,0.043646 6,1.962344,1.537047,1.537912,1.541024,1.537887,1.537680,1.538310 7,91.27873,71.35200,71.40925,71.36363,71.31444,72.05602,71.49907
両対数グラフを作成したがよくわからない。