"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Comparación de rendimiento de las afirmaciones de tipo GO y conmutación de tipo con otros métodos de verificación de tipos

Comparación de rendimiento de las afirmaciones de tipo GO y conmutación de tipo con otros métodos de verificación de tipos

Publicado el 2025-04-19
Navegar:190

How Do Go's Type Assertions and Type Switches Perform Compared to Other Type-Checking Methodologies?

type Asserción y cambiar el rendimiento en go

en los lenguajes de programación, determinar el tipo de variable u objeto durante el tiempo de ejecución es una operación fundamental. GO emplea afirmaciones de tipo e interruptores de tipo para facilitar este proceso. Este artículo profundiza en las características de rendimiento de estas técnicas.

Las preocupaciones de rendimiento

en algunos idiomas como C/C, el descubrimiento de tipo de ejecución puede incurrir en las penalizaciones de rendimiento. Los programadores Go han reflexionado sobre si las afirmaciones de tipo o los interruptores de tipo exhiben ineficiencias similares. Para abordar esto, realicemos un punto de referencia integral:

package main

import (
    "fmt"
    "testing"
)

func question(anything interface{}) {
    switch v := anything.(type) {
        case string:
            fmt.Println(v)
        case int32, int64:
            fmt.Println(v)
        case SomeCustomType:
            fmt.Println(v)
        default:
            fmt.Println("unknown")
    }
}

El código de muestra usa un conmutador de tipo para determinar el tipo de variable de entrada. importar ( "pruebas" ) Escriba myInt int64 Escriba la interfaz Inccer { Cª() } func (i *myint) inc () { *i = *i 1 } FUNC BenchmarkintMethod (b *testing.b) { i: = nuevo (myint) Incnintmethod (i, b.n) } FUNC BenchmarkMinterface (b *testing.b) { i: = nuevo (myint) Incninterface (I, B.N) } FUNC BenchmarkTypeSwitch (b *testing.b) { i: = nuevo (myint) Incnswitch (I, B.N) } FUNC BenchmarkTypeasSertion (b *testing.b) { i: = nuevo (myint) IncNassertion (I, B.N) } Func incnintmethod (i *myint, n int) { para k: = 0; k

En múltiples máquinas de prueba, los resultados revelan consistentemente que los cuatro métodos funcionan a velocidades similares: llamadas de método directo, implementaciones de interfaz, tipos de afirmaciones e conmutadores de tipo. El siguiente ejemplo demuestra estos hallazgos: BenchmarkintMethod-16 2000000000 1.67 NS/OP Benchmarkinterface-16 1000000000 2.03 NS/OP BenchmarkTypeSwitch-16 2000000000 1.70 NS/OP BenchmarkTypeasSertion-16 2000000000 1.67 ns/op

, nuestra conclusión es que las afirmaciones de tipo y los interruptores de tipo en Go no incurren en detrimentos de rendimiento notables cuando se comparan con otros tipos de metodologías de verificación.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3