僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
お馬鹿の続き。
fizzbuzzの数値出力行を少し変えた。
$ diff pr_fizz.py pr_new_fizz.py 18c18 < else: print ' printf("%d\\n",',x,');' --- > else: print ' printf("'+ str(x) + '\\n");'
$ python pr_new_fizz.py 10 #include<stdio.> int main(){ printf("1\n"); printf("2\n"); printf("fizz\n"); printf("4\n"); printf("buzz\n"); printf("fizz\n"); printf("7\n"); printf("8\n"); printf("fizz\n"); printf("buzz\n"); return 0; }
で、Cのソース、バイナリとも少し小さくなった。
以下、100行の例。
$ ls -alF 100.c n100.c -rw-rw-r-- 1 user group 2633 8月 12 06:22 100.c -rw-rw-r-- 1 user group 2368 8月 12 06:29 n100.c $ ls -alF 100 n100 -rwxrwxr-x 1 user group 8427 8月 12 06:23 100* -rwxrwxr-x 1 user group 8376 8月 12 06:29 n100*
出るものは同じ。
$ ./n100 | cat -n | sed -n '1,16p; 95,$p' 1 1 2 2 3 fizz 4 4 5 buzz 6 fizz 7 7 8 8 9 fizz 10 buzz 11 11 12 fizz 13 13 14 14 15 fizzbuzz 16 16 95 buzz 96 fizz 97 97 98 98 99 fizz 100 buzz
$ ./100 | sha1sum b0a6d742a6e9aa22b410e28e071609c44d3a985e - $ ./n100 | sha1sum b0a6d742a6e9aa22b410e28e071609c44d3a985e -
お馬鹿なfizzbuzzで、100万行を試す。
これはすぐできた(i7 6GB)。
$ time gcc -Wall -o 1000000 1000000.c real 0m59.728s user 0m57.676s sys 0m1.904s
でも、1000万行になると、10GBくらいの
スワップを喰って数時間。終わる気配がない。
もうすこし間を確認しよう。
ちなみに一億行となると、70GB程もスワップを消費した 挙句、4時間弱の苦闘の末にマシンが停止してしまった。
<後記>
以下、
全体。
それから、一億行Cのソースは2GBくらい。を出力するのに2分弱。
</後記>
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。