imgse
V2EX  ›  问与答

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

  •  
  •   imgse · Apr 20, 2019 · 4068 views
    This topic created in 2630 days ago, the information mentioned may be changed or developed.

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

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

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

    15 replies    2019-04-21 01:50:14 +08:00
    AngryPanda
        1
    AngryPanda  
       Apr 20, 2019
    请求耗时主要消耗在网络请求自身上面,与语言关系不大。

    请求发起和响应接收肯定有性能差异,但是占比应该很小。
    imgse
        2
    imgse  
    OP
       Apr 20, 2019
    @AngryPanda 我用 python 的 requests,比 golang 的 http.Get 要快几十毫秒,这没想到,是因为 golang 的初始化更耗时吗
    isCyan
        3
    isCyan  
       Apr 20, 2019 via Android
    @imgse golang 包含编译时间?
    imgse
        4
    imgse  
    OP
       Apr 20, 2019
    @isCyan 已经编译好了
    keepeye
        5
    keepeye  
       Apr 20, 2019
    你是怎么测的?
    imgse
        6
    imgse  
    OP
       Apr 20, 2019
    @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
        7
    keepeye  
       Apr 20, 2019
    @imgse 我用 python 和 go 测了没啥区别,都是 25ms 左右
    imgse
        8
    imgse  
    OP
       Apr 20, 2019
    @keepeye 我用 python 测试,70ms 左右,不过你那怎么这么快啊,我这测试最快的也才 50ms
    keepeye
        9
    keepeye  
       Apr 20, 2019
    @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
        10
    rayhy  
       Apr 20, 2019
    @imgse go 哪个版本啊?我之前也遇到过这个问题,仅供参考: https://www.sunp.eu.org/t/514632
    imgse
        11
    imgse  
    OP
       Apr 20, 2019
    @keepeye 看来是我 golang 的写法有问题。
    imgse
        12
    imgse  
    OP
       Apr 20, 2019   ❤️ 1
    @keepeye 我说怎么差别这么大呢,原来我用的 https。
    imgse
        13
    imgse  
    OP
       Apr 20, 2019
    @rayhy go version go1.12.4 darwin/amd64
    6j1A6v70lEv5n2U2
        14
    6j1A6v70lEv5n2U2  
       Apr 21, 2019 via iPhone
    用 C# 和 PHP 写的请求同一个地址,不严谨的感觉 PHP 慢很多
    imgse
        15
    imgse  
    OP
       Apr 21, 2019
    @dog c#和 PHP 没有测试,大概用多少毫秒啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   927 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1381ms · UTC 21:22 · PVG 05:22 · LAX 14:22 · JFK 17:22
    ♥ Do have faith in what you're doing.