Entries from 2008-04-01 to 1 month
さあ比較してみよう。 計測条件 X60 Core2 Duo Linux 2.6.22-14-generic #1 SMP Gauche は version 0.8.13 [utf-8,pthreads] 自前処理系は r5198 gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2) -O2 -fomit-frame-pointer 計測結果 計測項…
うへぇ。 time コマンドって内部・外部コマンド両方あるのか。知らんかった。
ここ数日時間をかけているわりにはインタプリタのパフォーマンスチューニングが進まない。 しかもうまく進む気がしないもやもやする。これは良くない兆候だ。 Mさんに言わせればこれは知識や経験やどこまでやりこんだことがあるかといったものが足りないこと…
(define (open-string-output-port) (let* ([port (open-output-string)] [proc (lambda () (let1 s (get-output-string port) (port-seek port 0) s))]) (values port proc))) こんな感じ?
今作っているでインタプリタ謎のエラーが出てびびった。 unbound variable ELF on top level うほ。なんだこれ。 自分自身を引数として実行してしまい ELF な実行ファイルの先頭を S式 として解釈しコンパイル。 #(REFER_GLOBAL |top level| ELF) を実行した…
fib(30)だとログが膨大になるので fib(26) にした。 コンパイルと eval の傾向は fib(30) と変わらないことは確認済み。 コード (define (fib n) (if (<= n 2) 1 (+ (fib (- n 1)) (fib (- n 2))))) (write (fib 26)) (display " :") 結果 REFER_GLOBAL_TOP_…
Index of /nightlyにある。(自己責任でインストールしましょう) いつも良く使っている拡張なのでこれはうれしい。 作者の id:fls さんに感謝。 あとはGoogle Browser Sync が対応してくれるのを待つのみだ。
小学生みたいな日記タイトルだな。 それはともかく光成さんにすすめられて読んだのですが、中島らもに期待していなかった分、本当にビックリしたし面白かった。 フィクションですがアフリカの呪術文化とかがまじめに書かれていてぐいぐい読ませる。3巻中の最…
合成命令をいくつか実装した。ほんの気持ち速くなった。 実装したのは以下の命令。 (define-insn BRANCH_NULLP 1) (define-insn BRANCH_EQ 1) (define-insn BRANCH_NUMBER_EQUAL 1) (define-insn BRANCH_NUMBER_GT 1) (define-insn BRANCH_NUMBER_GE 1) (def…
Continuation Fest 2008: Call for Participation 継続フェスの告知 DEFUN08: Call for Talks & Tutorials DEFUN 2008 invites functional programmers who know how to solve problems with functional programming to give talks and lead tutorials at th…
pukiwiki の挙動に不審な点があるため、今から PHP を触る。 sessionファイルが大量に溜まる。 セッション変数は、スーパーグローバル変数として扱われます。なんと1。 session.save_pathのパスの深さが2より大きい場 合、ガーベッジコレクションは行われま…
合成命令の実装の前に JVM の命令セットを眺めてみた。(VM Spec)目に留まったものをいくつか列挙。 aconst_null Push the null object reference onto the operand stack. bipush The immediate byte is sign-extended to an int value. That value is pus…
方針 internal define を持った手続きもプロファイルとれるようにする。 影響範囲がすべて見通せる小さな化コード片で計測しなおす 以下メモ。 (if 1 2 3) compile 153 usec eval 1usec pass1/sexp->iform と pass3 が26回も呼ばれるのがおかしいと思ったが …
楽しいぞ。やる気あるぞ。
昨日までの反省点いくつか。 -D GC_DEBUG の ON/OFF で20-30倍も速度が違うので OFF にすべきだった GC_DEBUG を OFF にすると昨日のコードでは実行がすぐ終わってしまうのでもうすこし負荷が高めのコードにすべき。 最適化オプションをつけていなかったが配…
コンパイルに時間がかかることで有名(?)な Gauche の compile.c ですが、僕のところの compiler.cpp は半端じゃなくコンパイルに時間がかかります。 O2 とかにするとやばい。
予想されていたことだが死ぬほど VM が遅い。(特にコンパイラが)以下のコードの実行時間を基準に高速化チューニング (library (rnrs io simple (6)) (export display) (import) (define (display x . port) (if (null? port) (sys-display x) (sys-display…
Why (begin) is the problem? (begin) の扱いについて GMP integration GMP の話が進んでライセンスの話に。処理系はMIT/Xで公開したいんだけど GMP の LGPL v3との組み合わせはどうなんだろうか。
良いライブラリだな。
(library (rnrs io simple (6)) (export display) (import) (define (display x . port) (if (null? port) (sys-display x) (sys-display x (car port))))) (library (higepon) (export hello) (import (rnrs io simple (6))) (define (hello) (display "hel…
やっとバグが取れた。ふぅ。 VM が安定して動くようになったのは良いが実行速度がとても遅いことが分かった。 過去の経験と勘から VM 内蔵コンパイラが遅いことが原因であることが推測される。 Scheme で書かれた内蔵コンパイラの一部を C++ で書き直すと劇…
今日はなし。
今日はこれで決まりでしょう。 New Lisp and Functional Programming Comic Novella! Land Of Lispというマンガが紹介されています。 英語のマンガで、ちょっと長めですが、簡単なので見てみると面白いと思います。 最初は流れが Lisp と関係ないように思え…
Firefox 3 Beta 4 から安全な更新方法を提供しないアドオンは無効になるみたいです。インストールもできません。 関連 URL http://developer.mozilla.org/ja/docs/Extension_Versioning,_Update_and_Compatibility http://developer.mozilla.org/ja/docs/McC…
処理系が受け取ったコマンドライン引数を内部エンコーディングの文字列に変換して文字列ポートにするみたいなのが書きやすい。 今は外からの入力を UTF-8 に限っているからかもしれませんが。
伝統的なマクロが動くようになった。 マクロを評価するには、コンパイル時に手続きを評価できる必要があります。 つまりコンパイラがVM(評価器)を保持している必要があるのです。 なので構造的に VM がコンパイラに依存(これは当たり前) コンパイラが VM…
ライブラリの import が動かない。 むぅ。 import の後に RETURN しないとまずいんだっけか。コードを見直そう。
(define-macro (receive . args) `(call-with-values (lambda () ,(cadr args)) (lambda ,(car args) ,@(cddr args)))) こんな感じで良いかしら。
たつをさんのところで紹介されていた「ランディ・パウシュ教授の最終講義」を見ました。 これだけ多くの人が見た方が良いというのだから何から得るものがあるはずだろうと。 ちなみに見た人は分かると思いますが↓のひとはランディ教授ではありません。http:/…