Para evitar la fatiga
12586269025
Introducción
CaracterÃsticas esenciales de Go
Qué aprenderás y qué necesitas saber
Repaso general: variables, condicionales, slices y map
Repaso general: GoRoutines y apuntadores
Programación orientada a objetos
¿Es Go orientado a objetos?
Structs vs. clases
Métodos y funciones
Constructores
Herencia
Interfaces
Aplicando interfaces con Abstract Factory
Implementación final de Abstract Factory
Funciones anónimas
Funciones variadicas y retornos con nombre
Go Modules
Cómo utilizar los Go modules
Creando nuestro módulo
Testing
Testing
Code coverage
Profiling
Testing usando Mocks
Implementando Mocks
Concurrencia
Unbuffered channels y buffered channels
Waitgroup
Buffered channels como semáforos
Definiendo channels de lectura y escritura
Worker pools
Multiplexación con Select y Case
Proyecto: servidor con worker pools
Definiendo workers, jobs y dispatchers
Creando web server para procesar jobs
Conclusión
Continúa con el Curso de Go Avanzado
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 10
Preguntas 0
Para evitar la fatiga
12586269025
Para ver el uso de CPU del codigo que testeamos, usamos
$ go test -cpuprofile=cpu.out
Para ver el resumen del uso del CPU:
$ go tool pprof cpu.out
Dentro de pprof
escribimos top
para ver como se han comportado los programas en nuestro test
(pprof) top
Además, dentro de pprof
podemos inspeccionar el tiempo promedio de ejecución de cada lÃnea de una función, usando el comando list <nombre_funcion>
(pprof) list Fibonacci
Tambien podemos ver el reporte del promedio de ejecución:
web
pdf
(pprof) web
(pprof) pdf
Para salir de (pprof)
puedes usar quit
o Ctrl + D
Para los que estén en Mac OS pueden instalar Graphviz mediante HomeBrew
brew install graphviz
Para los que tengan el Error y estén en linux (basado en debian):
failed to execute dot. Is Graphviz installed? Error: exec: "dot": executable file not found in $PATH
Lo unico que deben de hacer es un:
$ sudo apt install graphviz
Estas herramientas están OP. Go está potente,
Aqui una version del fib, de manera iterativa 😄
func Fibonacci(n int) int {
fib := make([]int, n+1)
fib[0] = 0
fib[1] = 1
for i := 2; i <= n; i++ {
fib[i] = fib[i-1] + fib[i-2]
}
return fib[n]
}
Esta implementación de Fibonacci es lenta principalmente porque calcula los valores de la sucesión dos veces, dentro de la pila de llamadas, se repite la función con los mismos argumentos. Una forma de mejorar el tiempo y llevarlo a prácticamente la mitad, es cambiar la recursión por un ciclo. Haciendo las sumas de menor a mayor, en lugar de mayor a menor.
func ComputeOnceFibonacci(n int) int {
size := math.Max(2, float64(n+1))
values := make([]int, size)
values[0] = 0
values[1] = 1
for i := 2; i <= n; i++ {
values[i] = values[i-1] + values[i-2]
}
return values[n]
}
Les comparto un articulo publicado en el blog de golang que trata sobre que es profiling y como se implementa y los usos a detalle
https://go.dev/blog/pprof
Go es increÃble
Esto esta genial
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. RegÃstrate o inicia sesión para participar.