El código Go se compila en archivos ejecutables binarios separados que se ejecutan de forma nativa sin usar una máquina virtual (los perfiles, los módulos de depuración y otros subsistemas de detección de problemas se integran en tiempo de ejecución como componentes del runtime), lo que permite un rendimiento comparable a los programas de C.
Principales novedades de Go 1.14
Un cambio principal en esta nueva versión se refiere al nuevo sistema de módulos en el comando go para su uso generalizado, está habilitado de forma predeterminada y se recomienda para la gestión de dependencias en lugar de GOPATH.
El nuevo sistema de módulos presenta compatibilidad con versiones integradas, herramientas de entrega de paquetes y un sistema mejorado de administración de dependencias. Con la ayuda de módulos, los desarrolladores ya no están vinculados a trabajar dentro del árbol GOPATH, pueden definir explícitamente dependencias basadas en versiones y crear ensamblajes repetibles.
Además, los subprocesos ya no tendrán que bloquearse indefinidamente, como es el caso anteriormente con un bucle sin llamar a una función, ya que Go Scheduler funciona para verificar un cierto tiempo de posible ejecución de la rutina actual durante las llamadas a funciones antes de quitarla del hilo para abrir el espacio y permitir la ejecución de nuevas rutinas. Esto tendrá un impacto en términos de menor latencia en Go 1.14.
Otro de los cambios es el soporte agregado para incrustar interfaces con un conjunto de métodos superpuestos. Los métodos de la interfaz integrada ahora pueden tener los mismos nombres y las mismas firmas que los métodos en las interfaces ya existentes. Los métodos declarados explícitamente siguen siendo únicos como antes.
Por otra parte se ha aumentado el rendimiento de la expresión “defer”, cuyo uso ahora casi no difiere en velocidad de una llamada directa a una función diferida, lo que permite utilizar el inicio diferido de una función en código sensible al rendimiento.
También se proporciona una preferencia preventiva asincrónica: los bucles que no contienen llamadas a funciones ahora pueden conducir a un punto muerto para el planificador o un retraso en el inicio de la recolección de basura.
Se ha mejorado la eficiencia del sistema de asignación de páginas de memoria, que ahora tiene significativamente menos conflictos de bloqueo en configuraciones con grandes valores de GOMAXPROCS.
Como resultado, las demoras se redujeron y el rendimiento aumentó con la distribución paralela intensiva de grandes bloques de memoria.
Fuente : linuxblog
- Visto: 1206