以下是“环游世界”中的以下并发示例
package main
import (
"fmt"
)
func fibonacci(n int, c chan int) {
x, y := 0, 1
for i := 0; i < n; i++ {
c <- x
x, y = y, x+y
}
close(c)
}
func main() {
c := make(chan int, 10)
go fibonacci(cap(c), c)
for i := range c {
fmt.Println(i)
}
}
我将其修改为不使用goroutine:
package main
import (
"fmt"
)
func fibonacci(n int) int{
if(n==0||n==1){
return 1
}
x:= 1
y:= 1
for i := 0; i < n; i++ {
tmp := x
x = y
y = tmp + y
fmt.Println(x)
}
return x
}
func main(){
fibonacci2(100)
}
但是,花费的时间几乎都在n = 100000时。 有没有人举过goroutines加快计算速度的例子?我想知道是否可能有一些编译器设置限制了我的程序可以使用的内核数量。 为什么goroutines不能加快计算速度?