Article View: pl.comp.objects
Article #17462Re: pl.comp.objects FAQ (Frequently Asked Questions and more)
From: klops
Date: Sun, 19 Sep 2010 16:20
Date: Sun, 19 Sep 2010 16:20
40 lines
3347 bytes
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-mailReferences:
<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