¿Cuál es la mejor optimización?Mejor técnica de optimización usando if/else o el diccionario
- Una serie de instrucción if/else que recibe la 'cadena' devuelve la función apropiada para ella. (Alrededor de 40-50 declaraciones if/else).
- Un diccionario que mantiene el par clave-valor. clave como cadenas, y valores como objetos de función, y una función principal para buscar y devolver el objeto de función.
La función principal que realmente devuelve el objeto de función utilizando el método anterior se llamaría millones o miles de millones de veces, por lo que debe hacerlo de forma inteligente. ¿Cuál podría ser la mejor manera?
Por ej.
dict['str1'] = func1
dict['str2'] = func2
and so on..
def main_func(str):
return dict[str]
O
def main_func(str):
if 'str1':
return func1
elif 'str2':
return func2
Lo que sería mejor ..? si tenemos 50-60 de estas cadenas, y este proceso debe ser miles de millones de veces.
Almacenamiento objeto de función dentro de diccionario, en función de sí mismo: -
def func1():
if dict.has_key('str1'):
dict['str1'] = func1
-- do something --
¿Qué es mejor, si esto o la de arriba. Esto se ve mucho más limpio. Pero recuerde, estas funciones se llamarían muchas veces, por lo que la función has_key también se llamaría muchas veces.
Gracias
Escribir ambos y ** perfilarlos **. – huon
Voy con el diccionario, pero en lugar de verificar primero si la clave está en el diccionario, solo tengo una función para realizar lo que se debe hacer si falta la cadena y devolver dict.get (string, string_missing_function) – Paddy3118
¡Buena llamada! Aprende algo nuevo todos los días, he incorporado tu bit en mi publicación. ¡Esto comienza a mostrar que function_lookup ni siquiera necesita definición! –