做Python的人,一定知道兩個性能優秀的異步網絡框架:tornado,和twisted。
那麼,這兩個著名的框架,又有什麼異同呢?tornado和twisted,我都用在幾個遊戲項目中,做過後端,覺得它倆其實大同小異。今天花一些時間,來分析它們之間的異同。如果有誤,請大家指正:
對比結果:
tornado 和 twisted,作爲異步框架,是大同小異的。只不過tornado 輕量級一些,twisted 重量級一些。在其他方面,也是互有長短。經過實測,發現這兩個框架,I/O性能差不多,對計算資源的佔用相差較多! 如果追求整體性能的話,推薦使用twisted。
注意,這裏的“高”和“低”只是它倆之間的對比。
測試說明:
都在一臺Linux機器上,同時接收5W個TCP數據包(包含一些遊戲數據),進行解析處理。爲了保證測試準確性,算法一致(甚至變量都完全一致)。
tornado 的運行情況:
twisted 的運行情況:
Tornado:完成這5W個包的處理,會快一點點。完成時間在32秒左右。但是CPU佔用達到45%。
Twisted:完成這5W個包的處理,相對就慢一些。完成時間在34秒左右。CPU佔用低一些,爲32%。
單獨測試收發包:
Tornado:每秒可完成14000次收發包(包大小101字節),CPU的一個核心跑滿。
Twisted:每秒可完成89000次(在另一臺I5的本地機器上測,是10萬次)收發包(包大小101字節)。CPU的一個核心跑滿。
附註,測試使用的版本爲:【tornado 3.2.0】,【 twisted 13.2.0】