-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!postnews.google.com!glegro
upsg2000goo.googlegroups.com!not-for-mail
From: Roman W <b...@g...pl>
Newsgroups: pl.comp.programming
Subject: Re: Składnia pętli (ogólnie i filozoficznie)
Date: Sat, 17 Mar 2012 09:19:18 -0700 (PDT)
Organization: http://groups.google.com
Lines: 93
Message-ID: <3360685.2549.1332001158521.JavaMail.geo-discussion-forums@vbbfw10>
References: <4f647cff$0$1273$65785112@news.neostrada.pl>
<jk221o$5ii$1@mx1.internetia.pl>
NNTP-Posting-Host: 91.125.135.206
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1332001488 21573 127.0.0.1 (17 Mar 2012 16:24:48 GMT)
X-Complaints-To: g...@g...com
NNTP-Posting-Date: Sat, 17 Mar 2012 16:24:48 +0000 (UTC)
In-Reply-To: <jk221o$5ii$1@mx1.internetia.pl>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=91.125.135.206;
posting-account=EexxQQoAAAAkOfWz0VZRKLcHNpXJZLB9
User-Agent: G2/1.0
Xref: news-archive.icm.edu.pl pl.comp.programming:196126
[ ukryj nagłówki ]On Saturday, March 17, 2012 1:01:53 PM UTC, bartek szurgot wrote:
> On 03/17/2012 01:01 PM, slawek wrote:
> > Czy jest jakiś ładny sposób zapisu if-wewnątrz-for (ew. innych pętli)
> > takich, że jest GWARANTOWANE przeniesienie if przed for w wyniku
> > kompilacji, tak aby test if wykonywał się tylko jeden raz - a nie np. 10
> > milionów razy - i to bez sięgania po optymalizację?
> >
> > Jeżeli jest coś takiego for{ if } -- czyli instrukcja warunkowa
> > wewnątrz pętli, np.:
> >
> > for (i = 0; i < 10; i++)
> > if(x > y)
> > {
> > ...a...
> > ...b1...
> > ...c...
> > ...d...
> > ...e1...
> > ...f...
> > }
> > else
> > {
> > ...a...
> > ...b2...
> > ...c...
> > ...d...
> > ...e2...
> > ...f...
> > }
> >
> > Oczywiście kumaty kompilator (x i y są ustalone z zewnątrz) powinien to
> > sobie zoptymalizować do
> >
> > if
> > {
> > for
> > for
> > }
> >
> > Ale jak to zapisać bez potrzeby odwoływania się do mądrości kompilatora
> > i bez rozwlekania jak niżej?
> >
> > if(a > b)
> > for (i = 0; i < 10; i++)
> > {
> > ...a...
> > ...b1...
> > ...c...
> > ...d...
> > ...e1...
> > ...f...
> > }
> > else
> > for (i = 0; i < 10; i++)
> > {
> > ...a...
> > ...b2...
> > ...c...
> > ...d...
> > ...e2...
> > ...f...
> > }
> >
> > W kodzie źródłowym niepotrzebne są dublowane linie ...a... ...c...
> > ...d... ...f..., co jest nieprzyjemne jeżeli jest ich za mało aby robić
> > z nich procedurę (i nie chcemy mieć narzutów na call/ret - no, ale to
> > też powinien zoptymalizować kompilator) - a jednocześnie MUSZĄ one być
> > dokładnie takie same (i np. poprawka w jednym miejscu pociąga za sobą
> > poprawianie w tuzinie podobnych.
>
>
> poczytaj o metaprogramowaniu. w połączeniu ze wzorcem strategii, będzie
> to to, czego szukasz.
Tez bym tak zrobil, w polaczeniu z funckjami lambda z C++ 0x moze to byc ladne i
eleganckie rozwiazanie. Ale wtedy nadal bedzie mial narzut na wolanie funkcji, jezeli
kompilator nie zdecyduje sie na inlining funkcji (nie musi).
Jezeli to jest NAPRAWDE koniecznie zeby uniknac wolania funkcji, to pozostaja makra
preprocesora.
RW
Następne wpisy z tego wątku
- 17.03.12 21:34 slawek
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- 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??
Najnowsze wątki
- 2025-02-21 Warszawa => Key Account Manager IT <=
- 2025-02-21 Warszawa => Data Engineer (Tech Lead) <=
- 2025-02-21 Aliexpress zaczął oszukiwać na bezczelnego.
- 2025-02-21 Warszawa => System Architect (Java background) <=
- 2025-02-21 Kula w łeb
- 2025-02-21 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-02-21 Warszawa => Solution Architect (Java background) <=
- 2025-02-21 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-02-21 Pawel S
- 2025-02-21 Warszawa => Key Account Manager (Usługi HR) <=
- 2025-02-21 Katowice => Senior Field Sales (system ERP) <=
- 2025-02-21 Chrzanów => Programista NodeJS <=
- 2025-02-21 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-02-21 Warszawa => Administrator Systemów Windows IT <=
- 2025-02-21 Wrocław => Specjalista ds. Sprzedaży (transport drogowy) <=