libraryタイトルの通り、マルチプロセスで使用可能なロックフリーのFIFOキューを実装したので、その簡単な紹介。Khuongさんが、こんな記事を書いていて、なるほどなー、と思ったので、表題に関係する部分を参考にさせて貰って変更前後での比較を行ったメモ。algorithmcompare-and-swap操作を用いたロックフリーなキューの実装。SBCLでのみ動作*1。自動的にロックを解放してくれたりはしないみたい。以下、試した内容のメモ書き。speedloop*1を使って、エラトステネスの篩を実装してみたメモ。以下、処理系にはSBCLのver1.0.54(x86-64bit)を使用。optimize前回の続き。githubにあるloopの簡易版を載せておく。基本的なJava等のIteratorと似た*1インタフェースを通してループ処理を実現している。lispでループ処理を関数型っぽく、かつ効率良く実装できるかどうかを試していたので、その結果を載せておく。FizzBuzz)というものがあるのを知ったので解いてみた。あと、本当に合っているかは不明。speedここ数日はScalaのコップ本を読んでいて、何かまとまったプログラムをScalaで書いてみたくなったのでGomoku(Java形態素解析器。ver0.0.6)をScalaで実装してみた*1。scala-gomoku(ver0.0.1)以下、使用例とJava版/Scala版の簡単な比較メモ。speed前々々回でスタック型言語をバイトコードにコンパイルする部分を、前々回でCommonLispアセンブラによるマシン語生成を、前回でそのアセンブラ上にスタック型言語のラップするところを扱った。sbcl前回のCommonLispアセンブラを使って、アセンブラ上に簡単なスタック型言語(っぽいもの)を組み立てて、それを使ってフィボナッチ数を計算するプログラムを書くと、どのような感じになるかを試してみた。cl-asmはバージョンを更新して0.0.2を使用*1。speed前回は、C++で単純なVMを書いて、その上でのフィボナッチ数の計算時間を測定した。lispCommonLispのfletとlabels的なものを(あらかじめ使えるものはlambdaしかない状況で)自分で実装する必要が出てきたので、その際のメモ。以下では煩雑になるためfuncall呼び出しの記述を省略している(実際にはScheme処理系で動作確認を行っていた)。sbcl端末上で動作するマインスイーパーをCommonLisp(SBCL)で実装してみた。端末操作部分のソースコードは以下のような感じ。基本的には端末のエスケープシーケンスで(カーソル移動や画面クリア、文字色等の)制御を行っている。library少し必要になったのでErlangでユニコード文字列と各種エンコーディングのマルチバイト列(バイナリ)の相互変換を行うモジュールを作成した。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。