对比Python和Go语言的每秒请求数

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

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

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

Python

server.py

  1. from bottle import route, run 
  2.  
  3. @route('/'
  4. def home(): 
  5.     article = {'name''A Royal Baby''body':'A slow news week'
  6.     return article 
  7.  
  8. def main(): 
  9.     run(host='localhost', port=8081
  10.  
  11. if __name__ == '__main__'
  12.     main() 

Go

server.go

  1. package main 
  2.  
  3. import ( 
  4.     "encoding/json" 
  5.     "fmt" 
  6.     "github.com/emicklei/go-restful" 
  7.     "io" 
  8.     "net/http" 
  9.  
  10. func main() { 
  11.     ws := new(restful.WebService) 
  12.     ws.Route(ws.GET("/").To(hello)) 
  13.     restful.Add(ws) 
  14.     fmt.Print("Server starting on port 8080\n"
  15.      http.ListenAndServe(":8080", nil) 
  16.  
  17. func hello(req *restful.Request, resp *restful.Response) { 
  18.     article := Article{"A Royal Baby""A slow news week"
  19.     b, _ := json.Marshal(article) 
  20.     io.WriteString(resp, string(b)) 
  21.  
  22. type Article struct { 
  23.     Name string 
  24.     Body string 

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

译文链接:http://www.oschina.net/translate/python-vs-go-requests-per-second

责任编辑:林师授 来源: OSChina
相关推荐

2019-09-26 09:42:44

Go语言JavaPython

2021-03-27 22:21:48

HTTPPython数据

2023-12-15 14:38:00

GoRust编程语言

2022-05-31 09:57:36

编程语言Go语言Python

2022-02-09 16:02:26

Go 语言ArraySlice

2018-08-09 18:27:03

编程语言JavaPython

2011-08-05 13:41:46

Go

2021-04-12 05:55:29

缓存数据Axios

2018-04-19 14:54:12

2023-03-29 08:03:53

2024-11-04 08:16:08

Go语言Web 框架

2018-02-24 16:15:03

PythonHTTP

2020-05-27 11:31:43

Python 开发程序员

2019-02-01 10:35:33

PythonGo语言编程语言

2017-04-24 14:39:01

PythonHTTP语言

2020-09-16 12:18:28

GoJava模式

2012-06-15 09:56:40

2020-10-20 09:51:51

Vue 3 的组合

2020-10-20 09:30:13

Vue 3 API 数据

2017-09-13 15:37:53

点赞
收藏

51CTO技术栈公众号