結果として、これら 2 つのライブラリは同様の哲学と同様の設計上の決定を共有しています。しかし、この人気のある WSGI ベンチマークによるeventletと、gevent. 彼らのパフォーマンスが大きく異なる理由は何ですか?
私が知っているように、それらの主な違いは次のとおりです。
geventは、独立したリアクター インターフェイスを定義しlibev、その背後にある、、および Twisted リアクターを使用して特定のアダプターを実装します。リアクター インターフェースを追加すると、重大なパフォーマンス ヒットが発生しますか?libeventeventletselectepollgeventほとんどが Cython で書かれていeventletますが、純粋な Python で書かれています。ネイティブにコンパイルされた Cython は、計算量はそれほど多くないが IO バウンドのプログラムの場合、純粋な Python よりも高速ですか?のプリミティブは
gevent標準ライブラリのインターフェイスをエミュレートeventletしますが、 のプリミティブは標準とは異なり、それをエミュレートする追加のレイヤーを提供します。エミュレーション層を追加するeventletと遅くなりますか?の実装は
eventlet.wsgiよりも悪いですgevent.pywsgiか?
全体的にとても似ているので、本当に不思議です。