2009-11-01から1ヶ月間の記事一覧

ざんねん!ピカチュウはよだれをたらしなきわめいている。

http://d.hatena.ne.jp/Longsword/20091130/1259573673の話。 ほとんどの場合、イオナズン一択になってしまうドラクエとは大違いです。 消費MP0の特技がもっとダメ感を強めているなぁ。むしろ山彦イオナズンができるだけマシとすら思う。 資源分配の厳しいゲ…

挿入ソートの話のまとめ

gcc4.3 -O3 on Atom, N=10000の条件で挿入ソートを測った結果(ソースコードは下に)。所要時間(time)を測っただけでは振る舞いが掴めないので、cachegrindでD1キャッシュ読み回数(D1read)を数えてみた。 関数 メモリ time D1read yane0 malloc 9.79 62M wkpd0…

挿入ソートの話の途中経過

Atom/gcc -O3だとループ変数をj=iからj=i-1に変えるといった、本質的ではない変更でも20〜30%の速度変化が起こり得るようだ。これはiccで比較してみた方が良いかもしれない。それらを含めた印象としては Wikipedia版もやね版も最適化がよく効いている場合に…

引数の評価順序。

ありがちダメなコードのダメな理由を書くコーナー。 現象。 #include <stdlib.h> #include <stdio.h> int main() { printf("puts(\"A\"), puts(\"B\"), puts(\"C\")+puts(\"D\") = %d, %d, %d\n", puts("A"), puts("B"), puts("C")+puts("D")); return 0; }をコンパイルして実行</stdio.h></stdlib.h>…

副作用のタイミング

ありがちダメなコードのダメな理由を書くコーナー。 現象。 C99のソースコード(tmp.c) #include <stdlib.h> #include <stdio.h> int main() { int i = 0; printf("(++i) + (++i) = %d\n", (++i) + (++i)); return 0; }をコンパイルして実行すると、 $ gcc -std=c99 -pedantic -O</stdio.h></stdlib.h>…

v8もたらいまわし

http://d.hatena.ne.jp/kilrey/20091111#p2の話。 function tarai (x, y, z) { if (x <= y) { return y; } else { return tarai(tarai(x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)); } }; for (var i = 0; i < 0x10; ++i) { (tarai(12, 6, 0)); } print…

マルチスレッドのvolatile

ありがちダメなコードのダメな理由を書くコーナー。 現象。 C99+POSIX(SUSv3)のソースコード(tmp.c) #include <stdlib.h> #include <stdio.h> #include <pthread.h> volatile int count = 0; int const COUNT_PER_THREAD = 0x100000; int const THREAD_NUM = 0x10; void* work(void* arg) {</pthread.h></stdio.h></stdlib.h>…

google golangでたらいまわし

http://golang.org/の話。 とりあえずたらいまわしてみたら、gcc -O3の4倍くらいの所要時間だった。なかなか速い。 package main import "fmt" func tarai(x int, y int, z int) int { if x <= y { return y } else { return tarai(tarai(x-1, y, z), tarai(…

情報漏洩関連

Web

http://slashdot.jp/~GetSet/journal/490564の話。以前、/.-jで読んだものだけれど。 問題のレベルが違う。 拾得者 大人げない。対応する権限がない人に文句を言っても意味がないし、電話後の処置も適切ではないだろう。 クロネコ 情報漏洩事故。罰則規定に…