2011-06-27 17 views
6

Gram w/z wzorcem specyfikacji, aby obsłużyć i zawrzeć logikę biznesową w naszej aplikacji C#/mvc. Jak na razie dobrze. Mam jednak pytanie - skoro będziemy tworzyć wiele obiektów specyfikacji na stercie, czy to wpłynie na wydajność w jakikolwiek sposób, np. Tworząc pomocnicze metody obsługi logiki biznesowej? Dzięki!Wzorzec specyfikacji i wydajność

+1

Alokacja sterty nie jest czymś, czego należy się obawiać w .NET, ponieważ a) zagęszczanie sterty oznacza, że ​​przydział jest ogólnie dość tani, a b) "wyrzucanie śmieci" oznacza, że ​​przydziały sterty są mniej ryzykowne (ponieważ nie musisz śledzić czasu życia obiektu, dokładnie.) –

Odpowiedz

5

mam pytanie chociaż - ponieważ będziemy tworzyć szereg obiektów na stercie specyfikacji, będzie to mieć wpływ na wydajność w jakikolwiek sposób w porównaniu z, powiedzmy, tworząc metody pomocnika do obsługi logiki biznesowej?

Oczywiście wpłynie to na wydajność, każdą linię kodu, którą napiszesz, i wybór konstrukcji, który wpływa na wydajność w taki czy inny sposób. To mało prawdopodobne, aby było sensowne, być wąskim gardłem w twojej aplikacji lub warte poświęcenia uwagi, ponieważ prawie na pewno jest to kwestia przedwczesnej optymalizacji. W dzisiejszych czasach powinieneś po prostu skupić się na poprawnym modelowaniu domeny i pisaniu niezwykle przejrzystego i możliwego do utrzymania kodu. Skup się bardziej na wydajności programistów niż na wydajności maszyn. Cykle procesora są tanie i niemal nieograniczone. Cykle wywołujące nie są tanie i nie mają nieograniczonej podaży.

Ale tylko Ty możesz wiedzieć, czy wpłynie to na rzeczywiste wykorzystanie Twojej aplikacji na dane w świecie rzeczywistym poprzez profilowanie. Nie wiemy i nie możemy tego wiedzieć, ponieważ nie znamy Twojej domeny, nie znamy twoich użytkowników, nie wiemy, czego oczekujesz, itd. A nawet gdybyśmy znali te rzeczy, nadal nie moglibyśmy ". • dać ci tak mocną odpowiedź, jak możesz dać sobie przez odkurzanie profilera z półki i zobaczyć, co faktycznie robi twoja aplikacja.

+0

Dziękuję i tak Zgadzam się z twoimi uwagami na temat wielu czynników, które idą do wydajności. Ponieważ próbuję powstrzymać naszą logikę biznesową, uznałem, że wzór specyfikacji jest użyteczny (logika biznesowa, łatwa w testowaniu jednostkowym), jednak nasza przewaga nie jest przekonana i można by sądzić, że ten sam wynik można osiągnąć przy mniejszej ilości kodu i mniejszej ilości obiektów korzystających z pomocy metody. – rh1200

2

ponieważ będziemy tworzyć szereg obiektów na stercie specyfikacji, będzie to mieć wpływ na wydajność w jakikolwiek sposób

Większość wzorce projektowe kompromis pewne obciążenie dla czystości design - to nie jest wyjątkiem . Ogólnie rzecz biorąc, ilość pamięci dodawana do specyfikacji jest bardzo minimalna (zazwyczaj kilka odniesień i to wszystko). Ponadto mają tendencję do dodawania kilku dodatkowych wywołań metod w przeciwieństwie do niestandardowej logiki.

Mimo to nie próbowałem przedwcześnie optymalizować tego. Obciążenie jest tutaj niezwykle małe, więc bardzo wątpię, by było to zauważalne w jakiejkolwiek aplikacji na świecie.

+0

Czy należy zgłaszać uwagi na temat przesypiska, ponieważ specyfikacje mogą znajdować się na stercie w dowolnej kolejności iw dowolnej liczbie? – RBZ