2009-10-01から1ヶ月間の記事一覧
sbcl(1.0.28)では、実行可能ファイルを作成することができる。 > (sb-ext:save-lisp-and-die "実行可能ファイル名" :toplevel #'エントリ関数 :executable t) エントリ関数には(必須引数の数が0個なら?)どのような関数でも指定可能なのだが、いろいろクセが…
シェルスクリプトで、親が受け取った引数を、そのまま子コマンドに渡したい場合は、"$@"を使えばいいらしい。 #! /bin/sh # file: parent echo "== $0 ==" for a; do echo "arg: ${a}" done ./child "$@" ./child $@ #! /bin/sh # file: child echo "" echo …
今日試しに使ってみたら、VC++2005のstd::setとstdext::hash_setがやけに遅かった。doarのWindows対応も一通り終ったので、VC++の上記クラスと検索速度を比較してみたのだが、結果は以下のようになった。 doar# 1.875 sec ※ 数値は、32587100要素(325871*100…
正確にはpingではないけど、機能的には似てなくもないメソッド。 引数にuriにHEADコマンドを投げて、open_timeout時間内に接続できればtrueを返す。 uriが有効(安全に読み込める)かどうかを知りたいときに便利。 同様の機能の既存のメソッドがあるかもしれな…
前に少しDoubleArrayの動的追加時(のx-check関数で空き領域を探す際)に乱数を使えば処理速度を大幅に改善できるのでは、というようなことを書いた。 この方法だとメモリ使用量は結構増える(まだ正確には把握していない)が、確かに処理速度は大きく向上する。…
Cからlispの関数を呼ぶ方法を調べた。 最終的には、lisp環境を動的ライブラリ形式っぽく保存して、Cで作成した実行ファイルから任意の関数を呼び出せるようにしたいのだが(そこまでやるかどうかは分からないが...)、とりあえず今日は、lisp関数を呼び出すCの…
doar-0.0.6のmkdoarコマンドで保存したDoubleArrayデータをロードして検索が行えるcommon lispの関数群を作成して、動かしてみた。検索速度的には、文字列を終始バイト列として扱うことを前提とすれば、C++版に比べて3倍程度遅いだけ(?)なので、まあ許容範囲…
doar実装関連雑記。 今日は、(形態素解析には必須の?)common-prefix-search関数の実装に取り組んでいた。 ;; common-prefix-searchの動作を示すための例 (defvar *data* '("自転車" "自動車" "自動" "自" "時刻" "自動車免許" "免許" "車")) (defun common-p…
SourceForgeにDoubleArrayのC++ライブラリ用のプロジェクトを作成した。 名前は、DOubleARrayでDoar。 とりあえず現状のソース*1とごく簡単なドキュメントが載せてある。まだまだ安定版には遠いけど...。 10月中には、主要な開発は終わらせたい...。 *1:動的…
僕が行うデバッグ(及びプログラムの動作確認)のほとんどは、プリントデバッグだ。 common lispのprint系の出力関数は、引数の値を出力した後(?)そのまま返してくれるので、ある式の値を手軽に知りたいときは、その式を(print exp)といったように出力関数で囲…
前回、ハッシュテーブル用にprint-objectメソッドを定義したが、これには重大な欠点があった。次の例を見てもらえば分かると思うが、要素数がある程度大きくなると出力が極めて見にくくなってしまう。 ;; 30要素のハッシュを作成する > (let ((hash (make-ha…
今日、会社の同僚や先輩と、通常のものより比較回数が少なくてすむ二分木探索の実装方法や性能について、(以前見た or 書いた覚えはあるが忘れていたので)あれこれ話していた。 その結果、(一部は自分の中で)一応の結論を得たので、書いておく。 ※ 以下に書…