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