这两个库具有相似的哲学和相似的设计决策。但是,这个流行的WSGI基准测试称eventlet
比gevent
慢得多。是什么造成它们的性能差异如此之大呢?
据我所知,它们之间的主要区别在于:
gevent
故意依赖于并与libev
(libevent
, 以前)耦合,而eventlet
定义了独立的反应器接口,并使用select
、epoll
和Twisted反应器来实现特定的适配器。 额外的反应器接口会对关键性能产生影响吗?gevent
大部分是用Cython编写的,而eventlet
是纯Python编写的。原生编译的Cython是否比纯Python更快,对于不太需要计算但需要IO绑定的程序?gevent
的基本元素模拟标准库的接口,而eventlet
的基本元素与标准库不同,并提供附加层来模拟它。 额外的模拟层会使eventlet
变慢吗?eventlet.wsgi
的实现只是比gevent.pywsgi
差吗?
我真的很好奇,因为他们整体看起来都很相似。