自己紹介

太田一樹。
東京の大学の情報科学科に通う大学生。moratorium満喫中。

お勧め書籍 [全部見る]

飾り

Search


Category Archives

Recent Entries

  1. 論文
  2. JJUG CCCでプレゼンします
  3. kzk's bookshelf
  4. En Google by Gulfweed
  5. PNUTS
  6. コメントスパム対策
  7. Hadoop + Luceneで分散インデクシング
  8. Hadoopの解析資料
  9. Cluster 2008
  10. SWoPP 2008

2007年11月20日

epoll(2)とselect(2)の計算量

研究室でid:yama6がepollとか言っていて、mixi Engineers' Blog さんの「Linux Programming、epollの話」を思い出した。

パフォーマンスの方はselect(2)とpoll(2)のtime complexityがO(n)に対しepollはO(1)と無視のできない性能の差を実現しています。

これこれ、書こうとして忘れてた。僕の理解だとepoll(2)はO(n)でselect(2)がO(n^2)です。この差はsignificantですよ!

例えば1万個のソケットを管理しているとします。で、ソケットが1個づつ順番に読み込み可能になるという最悪のシチュエーションを考えて見ます。select(2)だと10000 * 10000のループが回ります。epoll(2)だと10000 * 1回のループが回ります。

そういう上手いペースで接続をする方法を思いつかないので、実データで示せないのが申し訳ないですが。libeventのグラフもO(n ^ 2)の曲線になってませんな...。


trackbacks

trackbackURL:

『epoll(2)とselect(2)の計算量』の関連記事

comments

いや、それはたぶん同じことを言っていて、リンク先のほうは「ひとつのコネクションを裁くのにかかる時間」なのではー

いや、そりゃまぁそうなんですが、元記事だと1万コネクションになっても対した問題にならなさそうな言い方だと思ったんですね。

1万回程度loopしても対した問題にならないんじゃ?という反論が来てもまぁそうかとなってしまう説明の仕方だなぁと。でもO(n ^ 2)だと話は違いますよね。

というエントリでした。舌足らずで申し訳ないですが。

  • kzk
  • 2007年11月21日 17:18
comment form
comment form