分享
  1. 首页
  2. 文章

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

zajin · · 4790 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

我使用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, 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基准测试的想一起分享么?



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:zajin

查看原文:对比 Python 和 Go 语言的每秒请求数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
4790 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏