2010/06/20

よく考えたら

よく考えたら、SRCはインタプリタだった。
コンパイラを書いたことはあるけど、インタプリタは無い……。

鶫のソースに触れてみようと思ったけど、インタプリタのノウハウが全くなくて最初からつまずいた。
でも、インタプリタって結局自分が解釈可能な(コンパイラでいう)バイナリを吐くだけなのかな。

2010/06/13

気になったエラー

鶫をビルドしてるときに気になったエラー。

初期化リストについて、VCだと以下のようなコードでコンパイルエラーになった。
VC10でエラーになるのはまあいいとして、VC9 SP1でもエラーになった。

鶫のオンラインマニュアルを見ると開発環境はVC9のようだけど、さてはて。

エラーを再現する最小のコードとして以下のコードを書いたけど、何か間違えてる……?

ちなみに、GCC4.5.0では期待通りに動く。


#include 

struct test {
 int num1; int num2;
};

class foo {
public:
 test t;
 foo() : t({10, 20}) {}
 ~foo(){}
 void print() {
  std::cout << t.num1 << std::endl;
  std::cout << t.num2 << std::endl;
 }
};

int main() {
 foo f;  // g++4.5.0 OK, VC9 SP1, VC10 compile error
 f.print();
 return 0;
}

自作パーザとBoost.Spirit

Boost.Spiritの処理速度について気になったので。

解析にBoost.Spiritを利用しているBoost.PropertyTreeのjson_parserと、フルスクラッチした自作json_parserで速度を比較してみた。

11KB程のjsonファイルを10000回読み込むのに、
PropertyTree: 13.94 sec
自作パーザ: 6.51 sec

と二倍ほどの差が出た。


しかし、データ構造の構築も含めた時間になっているので、単純な解析速度の差というわけではない。

2010/06/12

test

テスト投稿