Go问答 bench fasthttp 和 库自带的net.http性能,fasthttp完败?

codinghxl · 2019年11月15日 · 最后由 codinghxl 回复于 2019年11月17日 · 693 次阅读

bench fasthttp 和 net.http 性能,fasthttp 完败?

和官方号称的比库 http 快 10 倍,虚假的吗?

测试代码如下:


import (

"github.com/valyala/fasthttp"

"net/http"

"testing"

)

const url = "https://api.fcoin.pro/v2/market/ticker/btcusdt"

func BenchmarkFastHttpGet(b *testing.B) {

b.ResetTimer()

for i := 0; i < b.N; i++ {

fasthttp.Get(nil, url)

}

}


func BenchmarkNetHttp(b *testing.B) {

b.ResetTimer()

for i := 0; i < b.N; i++ {

http.Get(url)

}

}


测试结果如下:

 > go test -bench . -benchtime 10s

goos: darwin

goarch: amd64

pkg: github.com/nntaoli/fasthttp_test

BenchmarkFastHttpGet-8         30  367232385 ns/op

BenchmarkGoEx-8                   50   291842516 ns/op

PASS

ok  github.com/nntaoli/fasthttp_test 38.366s


更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

<p>给 gocn 论坛一个差评,插入代码格式居然是乱的</p>

<p class="cye-lm-tag">这是 client 的 benchmark 吧, 不是 server 的 benchmark</p>

<p>....居然发起一个真实的网络请求,网络延时的抖动远远大于每个库性能的基础值,现在这个 benchmark 是无意义的。</p>

<p>标题很好..............</p>

<blockquote><p><b>➜&nbsp; </b><b>fasthttp_test</b> go test -bench . -benchtime 10s -benchmem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br></p> <p>goos: darwin</p> <p>goarch: amd64</p> <p>pkg: github.com/nntaoli/fasthttp_test</p> <p>BenchmarkFastHttpGet-8 &nbsp; &nbsp; &nbsp; &nbsp; 30 1332501798 ns/op &nbsp; &nbsp; 1560 B/op &nbsp; &nbsp; &nbsp; 10 allocs/op</p> <p>BenchmarkNetHttp-8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 20 7228209495 ns/op &nbsp; &nbsp; 6443 B/op &nbsp; &nbsp; &nbsp; 97 allocs/op</p> <p>PASS</p> <p>ok&nbsp; github.com/nntaoli/fasthttp_test 194.035s</p></blockquote>

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册