Myślę, że przedwczesna wycena optymalizacji jest używana przez zbyt wielu, aby uniknąć myślenia o trudnych rzeczach dotyczących tego, jak dobrze aplikacja będzie działać. Gwarantuję, że użytkownicy chcą, abyś pomyślał o tym, jak zaprojektować go, aby działał jak najszybciej.
To nie znaczy, że powinieneś mierzyć wszystko, ale faza projektowania jest najłatwiejszym miejscem do optymalizacji, a nie kosztuje wiele czasu później.
Jest wiele sposobów na zrobienie czegokolwiek, powinieneś wybrać w fazie projektowania tę, która najprawdopodobniej najlepiej wykona (jeśli okaże się, że jest to jedna z okazji, gdy nie jest najlepsza, to zoptymalizować później).To powinno przeważyć potrzebę posiadania łatwego do odczytania kodu.
Jeśli nie rozważasz wydajności w fazie projektowania, nie będziesz miał dobrze zaprojektowanego systemu. Nie oznacza to, że powinno to być jedyną troską (chociaż w bazie danych oceniłbym ją jako trzecią pod względem ważności, zaraz po integralności i bezpieczeństwie danych), ale próbując naprawić system, w którym zastosowano słabe techniki, ponieważ programiści myśl, że łatwiej je zrozumieć, to koszmar. Bycie użytkownikiem takiego systemu, w którym musisz czekać na minuty za każdym razem, gdy chcesz przenieść się z jednego ekranu do drugiego, to koszmar (programiści powinni spędzać cały dzień codziennie przez co najmniej tydzień, używając swoich systemów!) Dla każdego, kto jest utknęły w źle zaprojektowanym systemie. Koszt jest mniejszy, aby zaprojektować prawidłowo niż naprawić później i biorąc pod uwagę wydajność ma kluczowe znaczenie dla prawidłowego projektowania.
Pracuję gdzieś, gdzie orginalni deweloperzy pili koolaid o przedwczesnej optymalizacji i robili wszystko, co uważali za najprostsze (ale w prawie każdym przypadku było to niewłaściwe z perspektywy wydajności). Teraz jesteśmy 10 razy większy niż trzy lata temu, a każdy ekran na każdej stronie trwa około 30 sekund (lub gorszy czas), a my tracimy klientów z tego powodu. Ale zmiana będzie zbyt trudna, ponieważ u podstawy zaprojektowali bazę danych, nie biorąc pod uwagę sposobu jej wykonania, a przeprojektowanie bazy danych z wieloma gigabajtami danych do nowej struktury jest zbyt czasochłonne i kosztowne. Gdyby zaprojektowano go tak, aby działał od początku, byłby łatwiejszy w utrzymaniu i szybszy dla klientów. Nie mówimy tu o potrzebie dostrojenia 10 najwolniejszych zapytań tutaj, mówimy o tym, że ogólna struktura wymaga drastycznej zmiany (która miałaby wpływ na praktycznie każde zapytanie przeciwko systemowi), aby działała dobrze.
Tak, nie rób mikro optymalizacji, dopóki nie będzie, ale proszę zrobić makro. Zastanów się, czy to najlepszy sposób, zanim podejmiesz decyzję o ścieżce. Nie pisz kursorów, aby trafić w tabele z milionami rekordów, gdy zrobi to polecenie oparte na zestawie. Nie staraj się mieć tak mało stolików, jak to tylko możliwe, ponieważ wydaje się to być bardziej eleganckim rozwiązaniem, gdy stoły przechowują różne przedmioty (takie jak ludzie, miejsca i pojazdy), powodując, że każde zapytanie trafia do tej samej tabeli i powoduje każde usunięcie aby sprawdzić wszystkie rodzaje tabel kluczy obcych, które nigdy nie będą miały rekordu dla tego typu encji (kasowanie jednego rekordu z głównej tabeli w naszej bazie zajmuje kilka minut, to jest prawdziwa radość, gdy coś idzie nie tak w imporcie (złe dane od klienta zazwyczaj) i musimy usunąć 200 000 pozwól mi powiedzieć).
Nie trzeba gorącym pod kołnierzem z szefem. Trzeba tylko powiedzieć, że to jest twoje praktyczne doświadczenie, które zawsze przebija z góry przyjęte pomysły. Poza tym, IMO, nie ma nic straszniejszego niż ludzie, którzy zgadzają się na wszystko w 100%. –
To jedna z tych debat, w których więcej razy ludzie nie rozmawiają tylko jeden obok drugiego. –
@Steve: Tak, podobnie jak polityka i religia. Jednym ze sposobów na powiedzenie czegoś, z czym nikt nie może się kłócić, jest "Myślę, że XYZ" lub "W mojej opinii XYZ", a nie tylko "XYZ". To, że posiadasz opinię, jest niepodważalne. –