Apache

つい勢いでApacheのmoduleを書いてみた。SQLiteのdbファイルにアクセスしてきたときにパラメータをSQLに変換して結果をXMLで返すというもの。簡単なアクセス制御も付いている。でUIは全てJavaScriptで制御するわけだ。
で、phpで書いた同様のSQLiteインターフェースと比べると倍近い速度で動いた。cgiと比べたらもっと大差だ。やはり生Cは速いね。スクリプトとは比べものにならない。今回はSQLiteで書いたがもっと一般的なDBサーバに対応した方が良かったかもしれない。*1
ちょっと思ったことがある。これ以上速くするためにはhttpdから書くしかないのではないかと。実際、Apacheは汎用性を高くするために一部速度を犠牲にしている。用途によってはlighttpdなどの軽量サーバの方が良いだろう。軽量サーバを改造して必要な機能を付け足す、大手Web会社ならあり得るかも。日本の会社だとちょっと怪しいかもしれないが。*2

      • -

返事。
http://www.hyuki.com/yukiwiki/wiki.cgi?TheC10kProblem
によると

linux-kernel のメーリングリストでは, このアプローチの利点と欠点を議論してきた. そこで得られたと思われる同意点は, カーネル内にウェブサーバを持ち込むより, カーネルにウェブサーバの性能向上のためのフックを最小限追加する方がいいというものだった.

だそうです。カーネルhttpdはあまり実用的ではないのかもしれません。それにどちらかというとCPU以外の方がボトルネックになるようですし。
ついでに検索して見つかったもの。ハードウェアでウェブサーバを実装しているそうです。私は想像もしていなかったですが、確かにその方が速いですね。
http://japan.cnet.com/news/ent/story/0,2000056022,20081012,00.htm

*1:http://www.chamas.com/bench/に面白いベンチマークがある。Cの専用moduleは静的HTMLより速いらしい。最近のデータではないけど。

*2:さらに上はカーネル・モジュール。もっと上は専用OS。