タグ

ブックマーク / kazuhooku.hatenadiary.org (2)

  • はやいTCPサーバを書く際に忘れがちなこと - kazuhoのメモ置き場

    はやいTCPサーバの書き方 - nyaxtのPC作業ログ で id:nyaxt さんが書いてらっしゃるように、 epoll や kqueue を使う TCP_NODELAY, TCP_DEFER_ACCEPT *1 等を活用する TCP パケットを意識する I/O システムコールの回数を最小にする sendfile といったあたりは、確実にやるべきことだと思います。一方で、TCP 関連以外のオーバーヘッドが実は結構あって、 接続のタイムアウト処理 ログの出力 メモリの確保や解放をやらない あたりにも気を配る必要がある、と思います。 接続のタイムアウト処理については、以前 Kazuho@Cybozu Labs: 高速なCometサーバを書いてみた件 に書いたように、ビットアレイのリングバッファを使うのがベストだと思います。 ログの出力について、複数行を1回のシステムコールにまとめてもいいかど

    はやいTCPサーバを書く際に忘れがちなこと - kazuhoのメモ置き場
  • 「ループは -1 まで回せ」 - kazuhoのメモ置き場

    元の話題は int vs size_t problem のあたり。符号なし型の減算ループをどう書くかという話。 実は、一定数までカウントアップするよりも 0 を通り過ぎるまでカウントダウンする方が速度とコードサイズの両面で良い、ってのは最適化の定石だと思ってました。特にアセンブリレベルでは。 自分が使ってた 68000 だと、ずばり、「レジスタの値をデクリメントして -1 じゃなければジャンプ」という DBRA 命令がある (しかも速い) し、x86 でも、 loop: ... subl $1, %esi jns loopみたいな形で、カウンタが符号なし型であっても高速なループが書けるんじゃないかと。 でもそういえば Metrowerks のコンパイラはこの最適化をしてくれなかったような気がするけど GCC (4.0.1 (Apple Inc. build 5465)) だとどうなんだろと

    「ループは -1 まで回せ」 - kazuhoのメモ置き場
    blanketsky
    blanketsky 2009/01/19
    optimization
  • 1