Poprawienie złożoności algorytmu jest według Ciebie premature optimization.
Zależy jaki jest use case.
Jeśli odpalamy coś raz albo co jakiś czas, to naprawdę może to być niewydajne a i tak użytkownik nie zobaczy.
Co innego funkcja, która odpala się 60 razy na sekundę.
Jak odpalamy coś dla małego zbioru danych, to też możemy zrobić coś niewydajne, a też będzie rybka.
Co innego jak mamy tych danych więcej,
Jednak dzisiaj często ważniejszy jest czas programisty niż czas wykonywania skryptu. Takie czasy.
Pogrubiłem "często", bo niestety nie zawsze i traktowanie sprawy "olejmy wydajność całkowicie" skutkuje tym, że teraz byle stronki internetowe zamulają strasznie, bo już nikt niczego nie optymalizuje. Kiedyś się szlifowało każdą linijkę i usuwało każdą niepotrzebną rzecz z kodu - teraz hulaj dusza, liczy się tylko "time to market", jak szybko dany ficzer wejdzie na produkcję). No ale przesada w drugą stronę "wydajność ponad wszystko" też moim zdaniem nie jest dobra. A przynajmniej nie do każdego rodzaju aplikacji (przy robieniu silnika gier to pewnie takie podejście skupione w 100% na wydajności byłoby super, przy robieniu apki biznesowej pewnie niekoniecznie, bo bardziej by się liczył czas programisty spędzony na implementowaniu ficzera niż to, czy się uruchomi całość w 0.01 sekundy czy w 0.05 sekundy).
No ale nawet w apkach biznesowych są miejsca, gdzie jednak potrzeba tej wydajności, więc do pewnego stopnia mogę ci przyznać rację.