Article View: pl.comp.objects
Article #17093Re: pl.comp.objects FAQ (Frequently Asked Questions and more)
From: klops
Date: Sun, 19 Sep 2010 18:20
Date: Sun, 19 Sep 2010 18:20
41 lines
2222 bytes
2222 bytes
W dniu 2010-09-15 18:10, Kamil Konieczny pisze: > T.1.16 Czy programy obiektowe sa wolniejsze od proceduralnych? Oczywi�cie, �e tak!!! W brew twierdzeniom w tym FAQ (st�d ten post). Jest jedna podstawowa przyczyna spowolnienia wobec program�w proceduralnych: Bardzo intensywne u�ycie funkcji (zar�wno zwyk�ych i wirtualnych). W�skie gard�a to: 1. konstruktory i destruktory - a szczeg�lnie kopiowanie przez warto�� i warto�ci tymczasowe (przy dodawaniu/scalaniu/zwracaniu itp.) 2. funkcje kontroli dost�pu: set() i get() dla udost�pnianych zmiennych obiekt�w (uwa�ane jest to za prawid�ow� technik� - pomimo znacznych koszt�w) 3. prze�adowane operatory np: operator(), operator[], operator* Cen� za bardziej modu�owy, czytelniejszy, bardziej nie zawodny i nie powielany kod s� w�a�nie bardzo cz�ste wywo�ania funkcji a to jest kosztowne w C++ (w C z reszt� koszty s� podobne tyle �e wszystkie funkcje wywo�uje si� jawnie wi�c jakby kontrola i �wiadomo�� jest wi�ksza). Dlatego w j�zyku C++ jest szereg specjalnych zalece� i technik odno�nie wydajnego programowania (np. funkcje inline, referencje, w�asne funkcje new() i delete() dla wybranych obiekt�w, r�ne typy kontener�w). Z tym �e dominuje popularna i uwa�ana za profesjonaln� Unixowska zasada: "wczesna optymalizacja jest z�em" - wczesna optymalizacja uznawana jest za naiwne podej�cie do programowania. Wi�c tych wszystkich zalece� optymalizacyjnych cz�sto si� nie stosuje przy pisaniu pierwszych wersji kodu. Zatem prawie na pewno pierwsze dzia�aj�ce wersje program�w pisanych w C++ s� znacznie wolniejsze ni� by� powinny. Dlatego moim zdaniem optymalizacja program�w obiektowych jest obowi�zkowym punktem na li�cie zada� przy tworzeniu nowego programu. Bez tego nie ma szans by program by� zadowalaj�co szybki. Oczywi�cie programy proceduralne te� mog� by� napisane w nie wydajny spos�b i przez to wymaga� dalszej optymalizacji. Jednak niebezpiecze�stwo C++ polega na tym, �e na oko nie wida� tych wszystkich chmar funkcji jakie s� odpalane bo cz�sto jest to robione nie jawnie!
Message-ID:
<4c963840$0$27039$65785112@news.neostrada.pl>
Path:
polish.pugleaf.net!archive.newsdeef.eu!mbox2nntp-pl.comp.objects.mbox.zip!g2news1.google.com!news2.google.com!npeer01.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References:
<pl-comp-objects-faq-1-1284567009@ict.pwr.wroc.pl>