« MIME::Base64::URLSafe | メイン | Suica、おさいふケータイ、満員電車 »

2006年01月23日

C-0.04

 告知が遅れましたが、C-0.04 をリリースしました。

ダウンロード: tgz / RPM

 RPM からそのままインストールするか、あるいは、tar.gz を展開して configure && make && make install してください。

 C-0.04 における最大の変化は、コンパイルキャッシュの搭載です。コンパイルされたコードをキャッシュしてくれるので、動作がとても高速になりました。複雑なスクリプトではもちろんのこと、hello world を表示するようなワンライナーでさえ、 Perl よりも高速です (2回目以降の場合のみですが :-p)

hello world の速度比較
CPerl
1回目0.176s0.028s
2回目0.017s0.028s
3回目0.018s0.028s
4回目0.017s0.028s
5回目0.018s0.028s

 また、 C により書き直したことで、起動も高速化し、さらには、自己実行ができるようになりました。

% time C -m C.c -m C.c -m C.c -m C.c -m C.c -m C.c -m C.c -m C.c -m C.c -e 'printf("hello world\n")' hello world

real 0m0.074s
user 0m0.020s
sys 0m0.050s
%

 このように、十重に自己実行してもちゃんと動作します。しかも高速 (笑)。

 よろしくお願いします。

※※※ C インタプリタの最新の情報は、C アーカイブ をご覧ください ※※※

投稿者 kazuho : 2006年01月23日 15:41 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/361

コメント

初めてコメントする者です.こんにちは.

私も以前に同様の(完成度は別として) ruby script を書いたのですが,
その時には -n オプションをつけて,while (1) {...} のような
機能をつけた記憶が.あんまり使わなかったけれど.
あとは main 関数に引数を渡すオプションをつけました.
-a "arg1" とすると,argv[1] = "arg1" になる感じです.

ちなみに,その時には何に使ったかというと,seq の代わりに使ったり,
http://www.ioccc.org/1992/westley.c
のような国際難解Cコードコンテストのソースを
cut&paste しては実行して遊びました.

投稿者 ogwd : 2006年01月29日 20:33

ogwd さん、コメントありがとうございます。
この手のツールは、ちょっとしたことをする際に便利ですね。

large-C では、スクリプトファイル名より後の引数が argv として扱われるようにしています。
でも、ファイル名を - にしても stdin からスクリプトが入力されると判断しないので、ご提示の westley.c を cut&paste して遊ぶことはできませんでした。
#今気づいた orz

投稿者 kazuho : 2006年01月30日 10:55