-
Data: 2012-03-17 13:01:53
Temat: Re: Składnia pętli (ogólnie i filozoficznie)
Od: bartek szurgot <b...@n...spam> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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.
--
pozdrawiam serdecznie / best regards,
bartek szurgot
/* http://www.baszerr.org */
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- 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??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-01-29 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-29 Warszawa => Software .Net Developer <=
- 2025-01-28 Ściąganie hasła frezem
- 2025-01-28 Rok 1973
- 2025-01-28 Warszawa => Programista Dynamics 365 CRM <=
- 2025-01-28 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-01-28 Warszawa => Młodszy Specjalista ds. wsparcia sprzedaży <=
- 2025-01-28 Poznań => iOS Developer (Swift) <=
- 2025-01-28 Poznań => Dyspozytor Międzynarodowy <=
- 2025-01-27 Białystok => System Architect (Java background) <=
- 2025-01-27 Warszawa => Programista Dynamics 365 CRM <=
- 2025-01-28 nr KW to jednak dana osobowa
- 2025-01-27 Lokalizacja telefonu
- 2025-01-27 OT musk