トップ «前の日記(2014-08-11(Mon)) 最新 次の日記(2014-08-17(Sun))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2014-08-12(Tue) 昨晩から降っていたかも

少し短く

お馬鹿の続き。
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  -

100万行と1000万行

お馬鹿な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や内容が変った場合はあしからず。

index.htmlは ここから。