es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  ,

Answer

  1. Avatar for 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.

Comments are closed.