天天看點

對比Tornado和Twisted

做​​Python​​的人,一定知道兩個性能優秀的異步網絡架構:tornado,和twisted。

    那麼,這兩個著名的架構,又有什麼異同呢?tornado和twisted,我都用在幾個遊戲項目中,做過後端,覺得它倆其實大同小異。今天花一些時間,來分析它們之間的異同。如果有誤,請大家指正:

對比結果:

    tornado 和 twisted,作為異步架構,是大同小異的。隻不過tornado 輕量級一些,twisted 重量級一些。在其他方面,也是互有長短。經過實測,發現這兩個架構,I/O性能差不多,對計算資源的占用相差較多!  如果追求整體性能的話,推薦使用twisted。

對比Tornado和Twisted

注意,這裡的“高”和“低”隻是它倆之間的對比。

測試說明:

    都在一台linux機器上,同時接收5W個TCP資料包(包含一些遊戲資料),進行解析處理。為了保證測試準确性,算法一緻(甚至變量都完全一緻)。

tornado

對比Tornado和Twisted

twisted 的運作情況:

對比Tornado和Twisted

Tornado:完成這5W個包的處理,會快一點點。完成時間在32秒左右。但是CPU占用達到45%。

Twisted:完成這5W個包的處理,相對就慢一些。完成時間在34秒左右。CPU占用低一些,為32%。

單獨測試收發包:

Tornado:每秒可完成14000次收發包(包大小101位元組),CPU的一個核心跑滿。

Twisted

:每秒可完成89000次(在另一台I5的本地機器上測,是10萬次)收發包(包大小101位元組)。CPU的一個核心跑滿。

繼續閱讀