我有一个非常简单的脚本,它发出一个 get 请求,然后对响应做一些事情。我有 2 个版本,第一个使用 go 例程,一个没有我对两者进行基准测试,速度没有差异。这是我正在做的事情的一个愚蠢的版本:
普通版:
func main() {
url := "http://finance.yahoo.com/q?s=aapl"
for i := 0; i < 250; i++ {
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
}
fmt.Println(resp.Status)
}
}
去日常:
func main() {
url := "http://finance.yahoo.com/q?s=aapl"
for i := 0; i < 250; i++ {
wg.Add(1)
go run(url, &wg)
wg.Wait()
}
}
func run(url string, wg *sync.WaitGroup) {
defer wg.Done()
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
}
fmt.Println(resp.Status)
}
在大多数情况下,当我使用 go 例程时,程序需要更长的时间来执行。我在理解有效使用并发时缺少什么概念?
慕虎7371278
相关分类