トップ «前の日記(2007-05-22) 最新 次の日記(2007-06-01)» 編集

ひおにっき

2003|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|05|06|08|10|12|
2009|02|05|10|11|
今日:, 昨日:

2007-05-24

_ [Program] Erlang+Perl (組み込みドライバ編) #2

みかげさんとこにあるように, oregexp が速くてちょっとしょんぼり〜だったのもうちょっとがんばってみました. 処理をはしょって時間測るとこんな感じ.

呼び出し後直ぐ帰る   -- 0.36s
PUSHMARKまでして帰る -- 0.38s
PUSHまでして帰る     -- 0.65s
sub{[1]}を呼んで帰る -- 0.93s
ちゃんと処理して帰る -- 1.28s 

呼び出しにかかる部分 0.3s, SVを作るのに 0.3s, 関数呼び出しに 0.3s, 正規表現処理に 0.3s といったかんじ?ただ, 同じコードを普通に実行ファイルにすると0.2sで終わるので, バイナリ周りの要因もなにかありそう. 単に共有ファイルにしてみても変化はなかったし. 「限界までチューン」というか, そんなに混み入ったコードじゃないから途中はしょる部分があまりないなのです….

で, 関数呼び出しをどうにかとばすーってことで, がんばってみました. 直接正規表現生成&実行. とりあえずは動いた…. 速度も 0.8s とだいぶ向上♪ そんなコードはこちら. あ、perlre だけど eval も入ってたりします^^; あとでまた分けます…^^;

Dan さんからも頂いた Perl から Erlang の呼び出しはまだ未解決です^^; Erlangの関数を直接Cから呼ぶっていう方法はいまのところなさそう. 内部でErlangVM抱えちゃってそことメッセージ送受信, になるのかな.

ところでこういったコードでもXSっていえばいいんでしょうか?関数一個もつくってないですけれど(笑) perlapi を使って perl インタプリタを操作するプログラム, ていうのも言いにくいし^^;


(背景画像は [banner:Perl Box] [ Pearl Box ] http://flap.vis.ne.jp/pxb/ で配布されているものを加工したものです☆)