Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2008-11-19

CLで日記更新 + Outputzで文字数記録

| 18:11 | CLで日記更新 + Outputzで文字数記録 - わだばLisperになる を含むブックマーク はてなブックマーク - CLで日記更新 + Outputzで文字数記録 - わだばLisperになる

このはてなグループでの日記は、CL + SLIME + simple-hatena-mode.elで投稿しているのですが、今日、OutputzがAPIを公開されたそうなので、日記更新と連動させてみることにしました。

といっても、上のページにGaucheでのサンプルがあるので、それをDRAKMAに翻訳しただけという感じで

(let ((uri "http://cadr.g.hatena.ne.jp/g000001/")
      (size xxxx)
      (key "復活の呪文"))
  (http-request (apply #'format nil
                       "http://outputz.com/api/post?uri=~A&size=~D&key=~A" 
                       (mapcar #'hunchentoot:url-encode (list uri size key)))
                       :method :post))
...

のようなコードを投稿プログラムに組み込んで文字数をカウントした結果をAPIに送るという感じです。

ということで、記念カキコです。

MOP-IN-ONE-DAY-2008回想 (2)

| 09:30 | MOP-IN-ONE-DAY-2008回想 (2) - わだばLisperになる を含むブックマーク はてなブックマーク - MOP-IN-ONE-DAY-2008回想 (2) - わだばLisperになる

Q. メソッドは、関数より重くないですか?

A. 殆どの場合、メソッドで大丈夫。

メソッドの利用が速度的なネックになることは経験上あまりない。

defmethodと、クラスの組み合わせをdefstructと、関数に書き換えたことも全くなかった訳ではないが、非常に稀。

ただし、商用のCLの処理系は、色々と最適化にノウハウが蓄積されていて、メソッドと関数では速度的に大差ないが、フリーの処理系の場合、PCL(Portable CommonLoops)がベースになっていることが多く、PCLは効率の良い実装はされていないので遅くなっている傾向がある。

ACL(Allegro Common Lisp)では非常に効率良く実装されていて、ストリーム、スレッド等もCLOSで組まれている。

この辺のCLOSのパフォーマンスについては、商用メーカーの自社技術になっているので、具体的にどういうことが行なわれているのか、外部からは分からないことが多い。

また、パフォーマンスについては、Amazon CAPTCHAでも解説されている。

ちなみに、スタイルの問題として、

(defmethod my-append ((x null) y)
  y)

(defmethod my-append ((x cons) y)
  (cons (car x) (my-append (cdr x) y)))

こういうのは、IFを使わず書けて綺麗ではあるが、さすがに書かず、関数で書く。

ちなみに…

個人的には、SBCLを利用しているだけにショックでした(笑)

CLを大規模に利用していることで有名なITA Software社は、現在SBCLとClozure CLを基幹に利用していて、かつCLOSを駆使したプログラムとのことなので、SBCLとかでも頑張れるんじゃないかと思ったりするのですが、具体的にベンチを取って比較してみないとなんとも言えないですね(^^;

ともあれCLOS的なスタイルで書いて、パフォーマンスが出なかったら、商用の処理系も検討できるというのもCLらしくて良いかなとも思います。

また、Object-Oriented Programming: The Clos Perspectiveは日本のAmazonでみると無闇に高いのですが、海外から買うと、$40位で買えるようです。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20081119