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