Python比Golang慢多少?实际上两者差异并不大

Python一直被诟病并发很弱,确实,因为GIL的关系,Python在单进程运行的情况下,无法利用多核CPU,所以就被其他能在单进程的情况下利用多核CPU的语言“吊打”性能了。

但在使用了多进程后,结果仍然如此吗?为此,我特意做了一组实验。

我用VirtualBox新建了一台ubuntu虚拟机,配置为10G内存,4核CPU

在这里插入图片描述
使用apache2的ab进行测试,并发数为1000,请求10万次。

Python程序代码如下:

from sanic import Sanic
from sanic.response import json,text

app = Sanic()

@app.route("/")
async def test(request):
    return text("hello")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000,access_log=False,workers=4)

测试结果,平均每秒处理15000个请求
在这里插入图片描述Golang程序如下:

package main
 
import (
    "fmt"
    "log"
    "net/http"
)
 
func index(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "test message")
}
 
func main() {
    http.HandleFunc("/", index)
 
    err := http.ListenAndServe(":9090", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

测试结果,平均每秒处理18000个请求
在这里插入图片描述虽然Golang没有开多进程,但是Golang是能单进程跑满CPU的,所以开不开多进程并没有多大必要。

从上面的结果可以看出,Golang平均每秒处理18000个请求,Python平均每秒处理15000个请求,Golang的标准库比Python的Sanic快大约20%

由此可以看出Python在Web端的运行效率其实并没有想象的那么差劲。这次的实验让我不禁揣测,黒Python性能差,一秒只能处理几十个请求的朋友,是否只是刚刚入门Python而以。而同样鼓吹Golang性能牛,从而踩Python和其他语言的朋友,是否也都是在入门级别。因为Web后台的处理速度,和语言的关系并不大,瓶颈会在数据库和架构,而不是语言本身。

真心希望大家能公平的对待每一种语言,而不是随意抹黑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章