我使用Python工作已经有几年了,最近开始了一个关于GO的调查,主要看作是一个缓解瓶颈的实验,还没有大规模web服务器部署。

我用不同语言写了一个简单的REST服务,使用ab工具检测响应速度。

Python

server.py

  01 from bottle import route, run 02   03 @route('/') 04 def home(): 05 article = {'name': 'A Royal Baby', 'body':'A slow news week'} 06 return article 07   08 def main(): 09 run(host='localhost', port=8081) 10   11 if __name__ == '__main__': 12 main() Go

server.go

  01 package main 02   03 import ( 04 "encoding/json" 05 "fmt" 06 "github.com/emicklei/go-restful" 07 "io" 08 "net/http" 09 ) 10   11 func main() { 12 ws := new(restful.WebService) 13 ws.Route(ws.GET("/").To(hello)) 14 restful.Add(ws) 15 fmt.Print("Server starting on port 8080\n") 16 http.ListenAndServe(":8080", nil) 17 } 18   19 func hello(req *restful.Request,http://www.showmulu.com, resp *restful.Response) { 20 article := Article{"A Royal Baby", "A slow news week"} 21 b, _ := json.Marshal(article) 22 io.WriteString(resp, string(b)) 23 } 24   25 type Article struct { 26 Name string 27 Body string 28 }

Go语言的版本明显比Python版的更详细,但我认为它仍然非常言简意赅。Python服务器使用bottle框架,指定的article字典作为响应自动序列化返回。Go服务器使用go-restful包,这个包使得在Go中很容易构建RESTful API。

测试基准是在Macbook Pro上,CPU i7 2.4Ghz,16GB RAM。

使用下附命令:

ab -q -c 50 -n 1000 http://127.0.0.1:8080/ | grep "Requests per second"

结果

5次测试,1000次请求的平均每秒钟完成请求次数

Run Python Go 1 1310.58 13568.34 2 1332.82 13092.95 3 1331.54 13479.45 4 1306.09 13271.58 5 1274.49 13873.09 Go平均完成13457次请求/秒,Python完成1311次请求/秒 在本次测试中,Go在完成JSON响应方面比Python快10.26倍。

我知道这些脚本非常的简单,而且缺少实际应用中的逻辑——例如数据库连接。也许有比ab更准确的测试方法,但我认为这些结果足以给你一个尝试Go的理由。以我目前的经验,从Python到编译型语言有很多乐趣。

做过Python/Go基准测试的想一起分享么?

英文原文:Python vs Go - Requests per Second  

参与翻译(1人):Garfielt

本文转自:开源中国社区 [] 本文标题:对比 Python 和 Go 语言的每秒请求数 本文地址:
本文由虫虫软件发出:

10-04 19:21
查看更多