Java golang 等语言比 python 快,但在单次的网络请求上,Java,c/c++,golang 之类的是否还有优势?
我测试用 python 的 session.get ,一次请求耗时 和用 go 的 http.Get 差不多甚至有时还要快。(网络一样)
是不是 Java,c/c++,golang 之类的语言,相比 python,单次 get/post,并没有多少优势?
1
AngryPanda 2019-04-20 16:05:46 +08:00
请求耗时主要消耗在网络请求自身上面,与语言关系不大。
请求发起和响应接收肯定有性能差异,但是占比应该很小。 |
2
imgse OP @AngryPanda 我用 python 的 requests,比 golang 的 http.Get 要快几十毫秒,这没想到,是因为 golang 的初始化更耗时吗
|
5
keepeye 2019-04-20 16:21:02 +08:00
你是怎么测的?
|
6
imgse OP @keepeye 这是 golang 的,在我这多次测试大概是 150ms,用的是 golang 内置的 time 计算的耗时
func main() { t1 := time.Now() for i := 0; i < 1; i++ { url := "https://www.baidu.com/" http.Get(url) } t2 := time.Now() fmt.Println(t2.Sub(t1)) } |
9
keepeye 2019-04-20 16:41:35 +08:00
@imgse
[code] import requests import time t = time.time() resp = requests.get("http://www.baidu.com") t1 = time.time() print(t1 - t) [/code] [code] package main import ( "fmt" "io/ioutil" "net/http" "time" ) func main() { a := new([]int) fmt.Println(a) t := time.Now() resp, _ := http.Get("http://www.baidu.com") defer resp.Body.Close() ioutil.ReadAll(resp.Body) //fmt.Println(body) fmt.Println(time.Now().Sub(t).Nanoseconds() / 1000 / 1000) } [/code] |
10
rayhy 2019-04-20 16:45:50 +08:00
@imgse go 哪个版本啊?我之前也遇到过这个问题,仅供参考: https://www.v2ex.com/t/514632
|
14
dog 2019-04-21 00:10:46 +08:00 via iPhone
用 C# 和 PHP 写的请求同一个地址,不严谨的感觉 PHP 慢很多
|