🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #17093

Re: pl.comp.objects FAQ (Frequently Asked Questions and more)

#17093
From: klops
Date: Sun, 19 Sep 2010 18:20
41 lines
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>