Co jest lepszą optymalizacją?Lepsza technika optymalizacji za pomocą if/else lub dictionary
- Seria instrukcji if/else, która odbiera ciąg znaków, zwraca dla niego odpowiednią funkcję. (Około 40-50 instrukcji if/else).
- Słownik utrzymujący parę klucz-wartość. klucz jako łańcuchy i wartości jako obiekty funkcji oraz jedna główna funkcja wyszukiwania i zwracania obiektu funkcji.
Główna funkcja, która faktycznie zwraca obiekt funkcji za pomocą powyższej metody, byłaby nazywana milionami lub miliardami razy, więc trzeba to zrobić inteligentnie. Jaki może być lepszy sposób?
Dla np.
dict['str1'] = func1
dict['str2'] = func2
and so on..
def main_func(str):
return dict[str]
Albo
def main_func(str):
if 'str1':
return func1
elif 'str2':
return func2
Który będzie lepiej ..? jeśli mamy 50-60 takich ciągów, a proces ten musi być miliardy razy.
Przechowywanie obiektu funkcji wewnątrz słownika, w samej funkcji: -
def func1():
if dict.has_key('str1'):
dict['str1'] = func1
-- do something --
Który jest lepszy, ten jeden lub wyżej. Wygląda to znacznie czystsze.? Pamiętaj jednak, że funkcje te byłyby wywoływane wiele razy, więc funkcja has_key również byłaby wywoływana wiele razy.
Dzięki
Napisz zarówno i ** profiluj je **. – huon
Idę ze słownikiem, ale zamiast sprawdzać najpierw, czy klucz jest w dyktafonie, wystarczy mieć funkcję, która wykona to, co należy zrobić, jeśli brakuje napisu i zwrócić dict.get (string, string_missing_function) – Paddy3118
Dobra rozmowa! Każdego dnia ucz się czegoś nowego, włączyłem twój kawałek do mojego posta. To zaczyna pokazywać, że function_lookup nie potrzebuje nawet zdefiniowanego! –