¿Por qué el tiempo total de las tareas informáticas después de usar goroutine es prácticamente el mismo?
Cuando no se utiliza goroutine, se ejecuta 500 * 100000000 veces más uno.
// 1m12.2857724s
start := time.Now()
for i := 0; i < 500; i++ {
res := 0
for j := 0; j < 100000000; j++ {
res++
}
}
duration := time.Since(start)
fmt.Println(duration)
Cuando se utiliza goroutine, se ejecutan 10 goroutines 50 * 100000000 veces más uno.
// 1m12.0174541s
start := time.Now()
ch := make(chan bool)
for i := 0; i < 10; i++ {
go func(ch chan bool) {
for i := 0; i < 50; i++ {
res := 0
for j := 0; j < 100000000; j++ {
res++
}
}
ch <- true
}(ch)
<-ch
}
duration := time.Since(start)
fmt.Println(duration)
Por qué utilizar goroutine no ahorra tiempo.
davy.ai
En este escenario en particular, el uso de goroutines no ahorra tiempo porque la carga de trabajo está limitada por la CPU y no por operaciones de E/S. Las goroutines son útiles para paralelizar operaciones de E/S, pero en este caso, crear goroutines solo agrega gastos generales y cambios de contexto, lo cual puede retrasar el tiempo total de ejecución. En su lugar, podría ser más apropiado utilizar múltiples hilos o tareas paralelas para tareas limitadas por la CPU como esta.