タグ

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

  • Python 3.3 以上で使える Python/C API で文字列アクセスを高速化 - methaneのブログ

    試しに英語Blog を書いてみた のですが、書くので精一杯で結局何が言いたいのか分からない感じになってしまったので今後は日Blog 書いてから英訳しようと思います。 Python 3 は 3.2 まで、文字列を unicode に統一した関係で Python 2.7 に比べて遅くなったりメモリ効率が悪くなったりしてしまっていたのですが、 Python 3.3 で PEP 393 Flexible String Representation が導入されて改善されました。 PEP 393 は Python の内部だけではなく Python/C API にも変更を加えており、内部を理解しつつ新しい API を適切に使えば、バイト列と文字列の間の変換を行うような C 拡張を高速化することができます。 そろそろ Python 3.2 のサポートを切れる時期なので、思い当たる人は目を通してお

    Python 3.3 以上で使える Python/C API で文字列アクセスを高速化 - methaneのブログ
    kasumani
    kasumani 2015/01/05
    Python 3.3 以上で使える Python/C API で文字列アクセスを高速化 試しに英語で Blog を書いてみた のですが、書くので精一杯で結局何が言いたいのか分からない感じになってしまったので今後は日本語 Blog 書いてから英訳しようと
  • 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のブログ
    kasumani
    kasumani 2014/12/23
    http-parser と picohttpparser との比較 h2o Advent Calendar 2014 の記事です。 Minefield は http-parser (nginx のパーサーと基本的に同じもの) を利用しているのですが、これを picohttpparser に置き換えてみます。 最初は libh2o に置き換えるつも
  • 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のブログ
    kasumani
    kasumani 2014/12/22
    Unix Domain Socket において keep-alive が性能に与える影響 (Gazelle vs Meinheld) まず 1 についてですが、 keep-alive に対応することで内部のデータ構造が複雑になり速度が低下するというネガティブな要素と、接続を使いまわせることに
  • Web アプリケーションにおいては Python 3 への移行は簡単だという話 - methaneのブログ

    Python 2 / 3 両対応のライブラリをメンテナンスしている人にとって、 Python 3 の メリットは享受できずメンテナンスコストだけが上がるつらい状況がずっと続いています。 しかし、「Python 3 への移行が大変」というのは、Python 2 を捨てるのが大変、 Python 2/3 両対応の ライブラリをメンテナンスするのが面倒という意味です。 アプリケーションであれば、 Python 2 対応のプロジェクトPython 3 に対応させると同時に Python 2 への対応を切れるのでずっと楽ですし、さらに新規プロジェクトPython 3 で始めるのは もっと楽です。 特に Web 系では、 (Google App Engine などの例外はあるものの)自分で Python のバージョンを 選べることが多いし、主要なライブラリも Python 3 対応ができている

    Web アプリケーションにおいては Python 3 への移行は簡単だという話 - methaneのブログ
    kasumani
    kasumani 2014/10/04
    Web アプリケーションにおいては Python 3 への移行は簡単だという話 Python 2 / 3 両対応のライブラリをメンテナンスしている人にとって、 Python 3 の メリットは享受できずメンテナンスコストだけが上がるつらい状況がずっと続
  • Python でシェル経由でコマンド実行するときのバッドノウハウ - methaneのブログ

    PHPだってシェル経由でないコマンド呼び出し機能が欲しい コマンド実行でシェルが怖いなら使わなければいいじゃない どちらの記事でも Python の subprocess を使ってシェルを介在せずにコマンドを実行する方法が紹介されています。 シェルを介在すると、エスケープの問題考えるのが面倒だったり、 kill してみたらシェルだけ殺して肝心のコマンドがずっと残ってるというアホみたいな問題を避けられるのでお勧めです。 いい子はこれを使いましょう。 この記事ではどうしてもシェルの機能が使いたい場合や、 subprocess の PIPE の組み立てが面倒な場合のための、バッドノウハウを紹介していきます。 ちなみに、バッドノウハウと呼んでるのは、安全安心 one size fits all ではなく、メリット・デメリット・やり方をいちいち調べないといけなくて、しかもその調べる行為がほとんどコン

    Python でシェル経由でコマンド実行するときのバッドノウハウ - methaneのブログ
    kasumani
    kasumani 2013/12/25
    Python でシェル経由でコマンド実行するときのバッドノウハウ どちらの記事でも Python の subprocess を使ってシェルを介在せずにコマンドを実行する方法が紹介されています。 シェルを介在すると、エスケープの問題考えるの
  • 1