タグ

ブックマーク / methane.hatenablog.jp (4)

  • http-parser と picohttpparser との比較 - methaneのブログ

    h2o Advent Calendar 2014 の記事です。 Minefield は http-parser (nginx のパーサーと基的に同じもの) を利用しているのですが、これを picohttpparser に置き換えてみます。 最初は libh2o に置き換えるつもりだったのですが、まだ API が unstable でアプリに組み込む手順も確立されてないので parser だけを置き換えることにしました。 まだ完成していないのですが、 Hello, World くらいは問題なく動くレベルになったので、ここまでで気づいた http-parser と picohttpparser の違いを紹介し、ベンチマーク対決もやってみます。 特に置き換えを始める前は、 perf top で execute_http_parser という http-parser の関数が2%程度しかCPU

    http-parser と picohttpparser との比較 - methaneのブログ
    punitan
    punitan 2015/03/10
  • Unix Domain Socket において keep-alive が性能に与える影響 (Gazelle vs Meinheld) - methaneのブログ

    id:kazeburo さんが Gazelle という高速な Perl 用の Web アプリケーションサーバーを公開されました。 Gazelle - Plack Handler for performance freaks #yokohamapm from Masahiro Nagano Gazelle の特徴のうち幾つかは、 id:mopemope 作の Meinheld と同じです。 IO周りは全てCで書かれている accept4 や writev などの Linux 独自のシステムコールを利用している 一方で異なる点もあります。 Meinheld は HTTP/1.1 に対応していて、 keep-alive が利用できる。 Meinheld は greenlet というコルーチンを利用して、 long polling や SSE に対応している。 Meinheld が http-pa

    Unix Domain Socket において keep-alive が性能に与える影響 (Gazelle vs Meinheld) - methaneのブログ
    punitan
    punitan 2014/12/24
  • Tornado-MySQL をリリースしました - methaneのブログ

    PyMySQL をベースに Tornado をサポートした Tornado-MySQL をリリースしました。 Github: https://github.com/PyMySQL/Tornado-MySQL PyPI: Tornado-MySQL 0.2 : Python Package Index 単に IO 部分を Tornado に置き換えるだけでなく、簡単なコネクションプールも作りました。 通常のリクエスト−レスポンス型のWebアプリケーションとは異なり、 WebSocket などの長時間実行するプログラムだと、1リクエスト1トランザクションという使い方は合わなくなります。 そこで、Gosql.DB の様に、基的には autocommit を利用する前提でプール自体にクエリを実行するメソッドを付け、トランザクションが必要なときだけプールから取り出したコネクションを保持するト

    Tornado-MySQL をリリースしました - methaneのブログ
    punitan
    punitan 2014/08/28
  • Python 3 の標準入出力のエンコーディング - methaneのブログ

    404 Blog Not Found:備忘録 - #python3 で sys.std(in|out|err) の encoding を強制する というわけでこうなりました。 import sys sys.stdin = open('/dev/stdin', 'r', encoding='UTF-8') ... 無理矢理開き直すなんてずいぶんと乱暴だと私も思うのですが、 こういう強引な方法がちゃんと動くのがLLのいいところですね。 /dev/stdin だとWindowsでは動かないので、 open(sys.stdin.fileno(), ...) がいいと思います。 ぐぐれど探せどこれしか解答が思いつかず。 PYTHONIOENCODING という環境変数を使えば locale を無視して標準入出力のエンコーディングを指定することができます。 Pythonを使う時の基礎になるので、 Py

    Python 3 の標準入出力のエンコーディング - methaneのブログ
    punitan
    punitan 2012/08/11
  • 1