单次网络请求耗时,各语言的差距大吗?

2019-04-20 16:02:52 +08:00
 imgse

Java golang 等语言比 python 快,但在单次的网络请求上,Java,c/c++,golang 之类的是否还有优势?

我测试用 python 的 session.get ,一次请求耗时 和用 go 的 http.Get 差不多甚至有时还要快。(网络一样)

是不是 Java,c/c++,golang 之类的语言,相比 python,单次 get/post,并没有多少优势?

3094 次点击
所在节点    问与答
15 条回复
AngryPanda
2019-04-20 16:05:46 +08:00
请求耗时主要消耗在网络请求自身上面,与语言关系不大。

请求发起和响应接收肯定有性能差异,但是占比应该很小。
imgse
2019-04-20 16:10:41 +08:00
@AngryPanda 我用 python 的 requests,比 golang 的 http.Get 要快几十毫秒,这没想到,是因为 golang 的初始化更耗时吗
isCyan
2019-04-20 16:14:49 +08:00
@imgse golang 包含编译时间?
imgse
2019-04-20 16:18:30 +08:00
@isCyan 已经编译好了
keepeye
2019-04-20 16:21:02 +08:00
你是怎么测的?
imgse
2019-04-20 16:28:27 +08:00
@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))
}
keepeye
2019-04-20 16:31:26 +08:00
@imgse 我用 python 和 go 测了没啥区别,都是 25ms 左右
imgse
2019-04-20 16:33:48 +08:00
@keepeye 我用 python 测试,70ms 左右,不过你那怎么这么快啊,我这测试最快的也才 50ms
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]
rayhy
2019-04-20 16:45:50 +08:00
@imgse go 哪个版本啊?我之前也遇到过这个问题,仅供参考: https://www.v2ex.com/t/514632
imgse
2019-04-20 16:48:21 +08:00
@keepeye 看来是我 golang 的写法有问题。
imgse
2019-04-20 16:53:38 +08:00
@keepeye 我说怎么差别这么大呢,原来我用的 https。
imgse
2019-04-20 16:54:14 +08:00
@rayhy go version go1.12.4 darwin/amd64
dog
2019-04-21 00:10:46 +08:00
用 C# 和 PHP 写的请求同一个地址,不严谨的感觉 PHP 慢很多
imgse
2019-04-21 01:50:14 +08:00
@dog c#和 PHP 没有测试,大概用多少毫秒啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/557062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX