-
Path: news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!
news.nask.org.pl!news.unit0.net!news-out2.kabelfoon.nl!newsfeed.kabelfoon.nl!ba
ndi.nntp.kabelfoon.nl!news.ett.com.ua!not-for-mail
From: gupi man'a'go <2...@i...sk>
Newsgroups: pl.comp.programming
Subject: Re: jak optymalizować ze względu na znany warunek w wielokrotnie
powtarzanym bloku? [2]
Date: Mon, 7 Sep 2009 19:46:22 +0000 (UTC)
Organization: opRWTng
Lines: 86
Message-ID: <h83nu3$2kvj$1@news.ett.com.ua>
References: <h7jeoq$1n93$1@news.ett.com.ua> <h7jet7$1n93$2@news.ett.com.ua>
<h82j0t$c9b$1@atlantis.news.neostrada.pl>
NNTP-Posting-Host: xvm-26-236.ghst.net
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Complaints-To: u...@n...ett.com.ua
X-Notice: Filtered by postfilter v. 0.6.1
Xref: news-archive.icm.edu.pl pl.comp.programming:183421
[ ukryj nagłówki ]"Filip Sielimowicz" zaprogramował/a:
>> jak zapisać następujacy program tak, by ładny zapis składniowy nie
>> kosztował nieoptymalnie długiego czasu wykonywania?
>
> A jakiego rzędu wielkości jest ta 'nieoptymalność' ? Walka o tego if'a z
> warunkeim na prostej zmiennej
> typu bool jest imho bez sensu, jeśli, jak mówisz, otacza on 'dowolne
> bardzo zagłebione struktury wykonawcze'.
> Ja bym się bardziej skupił na tym, by kod był przejrzysty i jak najmniej
> redundancji.
> A jeśli akurat zagłębiona pętla jest wyjątkowo 'ciasna' i walczymy o
> każy takt
> (znaczy się bardzo często wykonywana i prosta - proc_1 i proc_3 są
> bardzo proste a iterator _2 bardzo liczny),
> to rozważyłbym ewentualnie wyłączenie tego warunku 'pętlę wyżej', czyli:
> Być może warto wtedy dodatkowo rozważyć zamiany iteratorów, jeśli
> iterator_1 jest liczniejszy niż iterator_2
> (i zamiana jest możliwa)
>
> int condition;
> for( iterator_1 )
> if( condition )
> for( iterator_2 ) {
> proc_1();
> proc_2();
> proc_3();
> } else
> for( iterator_2 ) {
> proc_1();
> proc_3();
> }
>
> Jest to jakiś kompromis między redundancją całości a nieoptymalnością.
> Ale jeszcze raz: jeśli umieszczenie ifa wewnątrz ciasnej pętli powoduje
> spadek wydajnosci rzędu 1-5% to IMHO rozważanie tej kwesti nie ma
> uzasadnienia praktycznego. A z tego co piszesz o 'złożoności struktur',
> to będzie to jeszcze mniej.
> No i jak ktoś wspomniał - kompilator i tak sam często będzie potrafił
> 'wyprowadzić' zależną od lokalnej 'stałej' (zmiennej
> nie zmieniającej się) na zewnątrz pętli.
>
> Prawdę mówiąc myślałem, że chodzi Ci o problem, gdzie condition nie jest
> zmienną
> ale funkcją, której wynik może sięzmienić albo zmienną współdzieloną
> przy dostępie wielowątkowym. Ale widzę, że tu sprawa jest maksymalnie
> prosta. Ty nie masz większych problemów programistycznych ? :)
oczywiście. oczywiście.
rolą kompilatora jest optymalizowanie, gdy coś jest równoważne obli-
czeniowo. i tego nie mam zamiaru zastępować. jeśli patrzeć z tego
punktu widzenia, to raczej zastanawiałbym się, jak kompilator mógłby
to optymalizować. i patrząc z tego puntku widzenia, nad tym się właś-
nie zastanawiam się.
natomiast to w powyższym akapicie jest drugim spojrzeniem, a pier-
wsze to: jak zrobić te iteratory, a właściwie to nie iteratory,
lecz bloki pętlujące (bo mają np. w takim "C" wiele różnych słów kluczo-
wych).
a teraz kilka skojarzeń:
był taki list na tej grupie lub może "p.c.l.c", gdzie ktoś pytał
o to, jak zrobić instrukcję procesora, która optymalizowałaby nieurucha-
mianie procedur, które nic nie zawierają (tylko instrukcję powrotu).
jak widać w powyższych przykładach-- jeśli byłaby instrukcja procesora,
która zamiast najpierw usiłować wykonać, a później wywoływać wyjątek
błędnego dostępu do pamięci, jeśli byłaby instrukcja procesora przeska-
kująca praktycznie żadnym kosztem pustą (co ja rozumiem przez ,,pustą"?
nie wiem co rozumiem, na razie nic) w miejscu wywołania procedurę,
to nie potrzebaby żadnego "condition" wewnątrz pętli iteratorów, prawda?
:-) tylko na zewnątrz pętli bez powielania kodu jakieś zmiany bloku,
zmiennych, rekonfiguracja, cokolwiek.
albo następne: dlaczego w "C++" coś na zewnątrz (biblioteka stan-
dardowa przez swoje makropolecenia ukrywające treść kodu wstawianego
do programu podczas kompilacji) ma mi trzymać kolejność elementów itera-
tora? dlaczego? nie ma trzymać, bo to jest nieuzasadnione wymusze-
nie, które przy większych kolekcjach, po których się iteruje, zmusza
do alokowania zasobów dla algorytmu tylko z powodu składni.
koniec podanych skojarzeń.
więc bloki pętlujące, nie tylko iteratory. nie wiem, kiedy zmienia
się "condition", lecz dlaczego mam go sprawdzać przy każdym przebiegu
bloku pętlujacego, jeśli wiem jednak więcej niż to, że jakieś wątki się
przełączą. tzn. mogę wiedzieć więcej, ale jeszcze nie wiem co wiedzieć
i jak to wpisać w składnię. zresztą pojęcie składni jest płynne,
szczególnie na tej grupie.
--
/ qo |) :@=N%_g=v=a=g_eD_e=c()=d=8! =%!gN@8'Re. w8in/ad
\ _x/ , ;h-%-a'hA'H4,X0'Xo~xo~xO,R`-%EXp01ITed: *-7/+eh
/ | ng `-%__%--'__%--'__%--~__%--^%B`/$qV3r[o; &GooMee
L_._o_O_*_^_"_'_`_ -> http://thereis.notlong.com <- `L"EnOF"
Następne wpisy z tego wątku
- 08.09.09 08:00 Filip Sielimowicz
- 08.09.09 09:02 Stachu 'Dozzie' K.
- 08.09.09 14:26 gupi man'a'go
- 08.09.09 14:53 gupi man'a'go
- 09.09.09 09:21 Filip Sielimowicz
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-05-18 Warszawa => Mid PHP Developer (Laravel) <=
- 2024-05-18 Warszawa => Software .Net Developer <=
- 2024-05-18 Warszawa => Mid/Senior QA Engineer <=
- 2024-05-18 Ulm => Solution Architect (sichere Kommunikation und IoT-Loesungen <=
- 2024-05-18 Katowice => Head of Virtualization Platform Management and Operating S
- 2024-05-18 Warszawa => SAP WM Consultant / Execution <=
- 2024-05-18 Wrocław => Consultant/Implementer Comarch ERP XL <=
- 2024-05-18 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-05-18 Warszawa => Account Manager (Recruitment Services) <=
- 2024-05-18 Łódź => Salesperson - CRM Systems <=
- 2024-05-18 Łódź => Handlowiec - Systemy CRM <=
- 2024-05-17 ZŁOMNIK o pracy w TVN TURBO, nowych przepisach i współczesnej motoryzacji. Turbo Taryfa!
- 2024-05-17 Białystok => DevOps Engineer Conexa First (Contractor) <=
- 2024-05-17 Warszawa => Starszy inżynier oprogramowania (Rust) <=
- 2024-05-17 Zabrze => Junior HelpDesk <=