2007-01-01から1年間の記事一覧

5km

ずいぶん走ってなかったので、短い距離から。 これでこの距離は3回目で、1回目より4分以上縮めた。 走行距離 5.0km 実時間 23分2秒 走行時間 23分2秒 平均速度 13.0km/h あまり計ったことがなかったので、これでもベスト。 でも、2ヶ月前はもっと速く走れて…

マルチスレッドの効率(6)

タスク数ごとにスレッド数を変えると効率がどうなるかを示した。スレッド数が多くなれば効率があがるが、その分オーバーヘッドが大きくなる。例えば、スレッドが1つ多くなると効率が0.02下がるとする。そのとき、10タスクなら、 2,0.802507 3,0.854111 4,0.8…

マルチスレッドの効率(5)

Nスレッドのときを考える。 例えば4スレッドに6タスク投入のとき、次のような分配が考えられる。 2 2 1 1 3 1 1 1 2 2 2 0 3 2 1 0 4 1 1 0 3 3 0 0 4 2 0 0 5 1 0 0 6 0 0 0 これを出す関数を作るのにけっこうてまどった。 これを出せば、あとは確率とかか…

マルチスレッドの効率(4)

効率が1に近づくことを示すには、 2lCl2-2l → 0 (l → 0) を示せばよい。 スターリングの公式、 を使うと、 となって、緩やかに0に近づく。

マルチスレッドの効率(3)

前回のEの計算は、 これを使えば簡単なことに昨日の夜気がついた。 (n - k)nCk = nn-1Ck まず、 N = 2l + 1 と表せる場合を考える。 I = NNC0 + ... + (N - l)NCl + (N - l)NCl+1 + ... + NNCN とおくと、 I / 2 = 2N-1E = NNC0 + ... + (N - l)NCl = NN-1C0…

マルチスレッドの効率(2)

タスクはランダムに選ばれたスレッドに投入されるとする。 2スレッドのときは簡単で、分配は2項分布で表され、それぞれのスレッドに投入されたタスクの数がa,bとすると、かかる時間はmax(a,b)となる。 だから、合計N個のタスクが投入されるときにかかる時間…

マルチスレッドの効率(1)

最近マルチスレッド化を行ったところ、シングルコアのハイパースレッディング(HT)にもかかわらず、2スレッドより4スレッドの方が速かった。 それより驚いたのは、2コアよりシングルコアのHTのほうが、マルチスレッド化によるスピードアップ率が高かったこ…

東京・埼玉(2)

神田 10:04 〜 10:06 秋葉原 山手線 秋葉原 10:09 〜 12:46 さいたま新都心 京浜東北線 さいたま新都心 15:32 〜 15:35 大宮 高崎線 大宮 16:53 〜 16:56 さいたま新都心 京浜東北線 さいたま新都心 20:08 〜 20:10 大宮 高崎線 大宮 21:17 〜 21:43 池袋 埼…

[遠征」東京・埼玉(1)

刈谷 8:36 〜 9:40 浜松 浜松 9:55 〜 10:45 藤枝 藤枝 10:48 〜 12:56 西焼津 徒歩 西焼津 12:58 〜 14:09 沼津 沼津 14:22 〜 14:43 熱海 熱海 14:50 〜 16:35 東京 東京 16:37 〜 16:39 神田 山手線 神田 17:30 〜 17:50 池袋 山手線 池袋 21:26 〜 21:47…

周期の小さな数列(5)

自分を含めて周期軌道にぶら下がっている要素の数は、 200個と500個をのぞくと、32個と80個になる。 しかも80はかならず2個おきに現れる。 これは、周期軌道は必ず、9の剰余を考えると、 2->5->8->2となることと関係があるようで、 2に直接ぶら下がるのが80…

周期の小さな数列(4)

変換、 g(x) = x + 5625 を考える。 xが、 x = 3000n + 2000 のとき、 f(g(x)) = (3000n + 7625)2 % 9000 + 1000 = (9000000n2 + 45750000n + 58140625) % 9000 + 1000 = (3000n + 625) % 9000 + 1000 一方、 g(f(x)) = (3000n + 2000)2 % 9000 + 1000 + 562…

周期の小さな数列(3)

例えば、次のような周期軌道 2000->5000->8000->2000 の要素に直接辿りつく要素の数を数えてみた。 すると、多くが32個、次に80個、 それ以外は 8000 200 1625 200 4625 200 5000 200 2000 500 7625 500 となった。 すなわち、 7625->1625->4625->7625 2000-…

桑○マラソン

伏せ字は検索対策。 走行距離 21.0975km 実時間 1時間46分10秒 走行時間 1時間47分5秒 平均速度 11.8km/h スタートラインまで1分近くかかったので。 最初の1.5kmまではまともに走れなかった。 以下、記憶不鮮明のラップ 1km 5:37 2km 5:31 0:11:08 3km 5:08 …

整数の分割の列挙(2)

整数の分割は、別の表現もできる。 例えば、 4 4 2 なら、 1が0個、2が1個、3が0個、4が2個、 だから、 0 1 0 2 とも表現できる。 こうすると、例えば、 4 1 1 1 1 1 1 1 1 が 8 0 0 1 となって、短くて済み、 最初に1でないものを見つけるのが速い。 これで…

整数の分割の列挙(1)

整数の分割の列挙というのは、 例えば5だったら、 5 4 1 3 2 3 1 1 2 2 1 2 1 1 1 1 1 1 1 1 というもの。 アルゴリズムは簡単で、 次の分割を得るには、 右から探して最初に1でないものを見つけて、 そこから1を引く。 そして、その数字を最大にして、残り…

周期の小さな数列(2)

4桁の自然数から4桁の自然数への写像ということなら、 何か演算して、9000の剰余を取って、1000を足せばよい。 例えば、 f(x) = (x * x) % 9000 + 1000 1121->6641->3881->6161->5921->4241->5081->5561->1721->1841->6281->4961->6521->8441->7481->4361->2…

周期の小さな数列

メルセンヌ・ツイスタは非常に周期が長いそうだが、 周期が短い数列がほしくなることもある。 4桁の自然数の簡単な算術による短い周期の数列がほしいが、 どうすればよいだろう。 例えば、次のような写像を考える。 f(x) = [ x * x / 10 ] mod 10000つまり、…

東京

電車が止まって、横浜かと思ったら、 松屋が見えて、松屋といえば保土ヶ谷だよなと思ったら、 本当に保土ヶ谷だった。 京浜東北線の東神奈川−新子安間に人が立ち入った、 ということで臨時停車。 その後、人を見失ったというアナウンス。 先行車が徐行して安…

エコが宗教で何が悪い

これなんだが、 環境省にとって不都合な真実 http://blog.goo.ne.jp/ikedanobuo/e/1c3853529fcf69961723f74b11dd1060 細かいことをあげつらって、 環境保護は科学的でないからダメなんだとさ。 私は、前からエコは宗教だと思っている。 思想と言ってもいい。…

須磨学園・小林が“小出塾”入り

http://daily.jp/general/2007/02/17/0000243942.shtmlそういう話は前からあったが。

配列の速さ(2)

D言語の配列の速度を調べる。 今回はオプションの違いで比べた。 -release -O とすると、C++の配列/vectorとだいたい同じ速度になった。 連想配列のときは-Oをつけたら遅くなったのよね。

東京(2)

秋葉原 18:14 〜 18:18 東京 京浜東北線 東京 18:36 〜 20:01 豊橋 ひかり 豊橋 20:09 〜 20:40 刈谷

皇居

2周走った。 1周5.3kmと聞いていたが、 タイムからするとそんなにはなさそう。 あとから地図で測ってみたら、4.95kmくらい。 そうすると、 走行距離 9.9km 実時間 48分1秒 走行時間 48分1秒 平均速度 12.4km/h 靴ひもを途中で結びなおさなかったらもっと楽に…

東京(1)

刈谷 8:52 〜 9:24 豊橋 豊橋 9:32 〜 9:41 新所原 新所原 9:44 〜 11:44 新居町 徒歩 新居町 11:45 〜 12:00 浜松 浜松 12:12 〜 14:21 沼津 沼津 14:26 〜 14:46 熱海 熱海 14:57 〜 16:40 東京 東京 16:42 〜 16:44 神田 山手線 神田 18:07 〜 18:19 新宿…

配列の速さ

前回と同じようにD言語の配列の速度を調べる。 D言語の配列のソースは次、 import std.cstream; import std.date;const int n = 256;struct pair { int first; int second; }void main() { d_time t0 = getUTCtime(); pair[n] m; for(int i = 0; i m[i].firs…

PCで長文はなぜ読みにくいか

web

今話題のこれ。 http://plusd.itmedia.co.jp/lifestyle/articles/0702/05/news015.html ここに書いてあることは別にどうってことないと思うが、 自分がなんとなく思っているのは、 雑誌の見開き、ってのは斜め読みできるからいいのよね。 最初をちょっと見て…

[プログラミング」ボウリングのアベレージとストライク率(2)

2回目があるとは思わなかった。 ストライクは連続して出やすいと考える。 そこで、前の投球がストライクだったときとそうでなかったときと ストライク率を変える。 前者をp1、後者をp2、平均をpとすると、 p2 = p(1-p1)/(1-p) となる。 (詳細は暇なときにで…

ボウリングのアベレージとストライク率

テレビでボウリングのアベレージが220の人が紹介されていた。 220の人はどれくらいのストライク率でなければならないのだろうか。 ストライクか9ピンで、スペアは必ず取る、と仮定して、 ストライク率を振って、100万回ずつシミュレーションした。アベレージ…

ハッシュの速さ

昨日速度を調べたのは、D言語と比較したかったから。 D言語についてはこのあたりから。 http://www.kmonos.net/alang/wnd/ D言語のハッシュは、 int[int] a;のように宣言して、 a[1] = 2;のように非常に自然に扱える。 が、速度を比較するとやっぱり遅い。2…

写像の速度

STL

前にも同じようなことを書いたが、 http://d.hatena.ne.jp/inamori/20060903/p1 もうちょっと詳細に。 f(x) = (x + 1) % n という写像のスピードを考える。 x = 0から1000万回この写像を繰り返して、その実行時間を調べる。 実装には、 map, hash_map, vecto…