🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #17462

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

#17462
From: klops
Date: Sun, 19 Sep 2010 16:20
40 lines
3347 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!
Technical Details
Message-ID: <4c963840$0$27039$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!feeder.news-service.com!newsfeed.kamp.net!newsfeed.kamp.net!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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!feeder.news-service.com!newsfeed.kamp.net!newsfeed.kamp.net!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
Date: Sun, 19 Sep 2010 18:20:14 +0200
From: klops <klops@klopsserver.pl>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.9) Gecko/20100915 Thunderbird/3.1.4
MIME-Version: 1.0
Newsgroups: pl.comp.objects
Subject: Re: pl.comp.objects FAQ (Frequently Asked Questions and more)
References: <pl-comp-objects-faq-1-1284567009@ict.pwr.wroc.pl>
In-Reply-To: <pl-comp-objects-faq-1-1284567009@ict.pwr.wroc.pl>
Lines: 40
Message-ID: <4c963840$0$27039$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.11.64.148
X-Trace: 1284913216 unt-rea-a-02.news.neostrada.pl 27039 83.11.64.148:49574
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit