Mam instrukcję if-elif-elif-else, w której w 99% przypadków wykonywana jest instrukcja else:
if something == 'this':
doThis()
elif something == 'that':
doThat()
elif something == 'there':
doThere()
else:
doThisMostOfTheTime()
Ta konstrukcja jest wykonywana bardzo dużo , ale ponieważ sprawdza każdy warunek, zanim trafi w inny, mam wrażenie, że nie jest to zbyt wydajne, nie mówiąc już o Pythonie. Z drugiej strony musi wiedzieć, czy któryś z tych warunków jest spełniony, więc i tak powinien go przetestować.
Czy ktoś wie, czy i jak można to zrobić skuteczniej, czy też jest to po prostu najlepszy możliwy sposób?
if not something.startswith("th"): doThisMostOfTheTime()
i zrobić inne porównanie w else
klauzuli.
something
, czy też podobne porównania są wykonywane wielokrotnie na tej samej wartości?
sort
uruchomić łańcuch if / else ... w taki sposób, że wszystkie elementy, do których będzie pasował jeden z warunków, znajdują się na jednym końcu, a cała reszta na drugim? Jeśli tak, możesz sprawdzić, czy to jest szybsze / bardziej eleganckie, czy nie. Pamiętaj jednak, że jeśli nie ma problemu z wydajnością, jest zbyt wcześnie, aby martwić się optymalizacją.