-6

我的 http 响应性能很慢

使用 Go 和 Fasthttp

package main

import (
    "fmt"
    "github.com/valyala/fasthttp"
)

func fastHTTPHandler(ctx *fasthttp.RequestCtx) {
    var s string = ""
    for i := 1; i <= 100000; i++ {
        s += "hello "
    }
    ctx.SetBodyString(s)
}

func main() {
    fmt.Print("Started")
    fasthttp.ListenAndServe(":8081", fastHTTPHandler)
}

并在 Insomnia (Postman) 中进行测试。执行时间 3-4 秒。PHP 上的类似代码在 900 毫秒内执行。

PHP 图像

戈朗形象

4

1 回答 1

3

使用+=几乎任何语言来连接大字符串通常会产生糟糕的性能,因此我不会将其用作任何与性能相关的指标。这就是为什么大多数语言的标准库中都有一些用于构建大字符串的东西。在 Java 中,您将使用java.lang.StringBuilder. 在 Go 中,他们添加strings.Builder了一段时间。我还没有运行它,但我相当有信心这会产生更好的性能:

s := strings.Builder{}
for i := 1; i <= 100000; i++ {
    s.WriteString("hello ")
}
ctx.SetBodyString(s.String())
于 2019-10-11T21:42:31.357 回答