eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingSkładnia pętli (ogólnie i filozoficznie)Re: Składnia pętli (ogólnie i filozoficznie)
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!opal.futuro.pl!news.internetia.pl!not-f
    or-mail
    From: bartek szurgot <b...@n...spam>
    Newsgroups: pl.comp.programming
    Subject: Re: Składnia pętli (ogólnie i filozoficznie)
    Date: Sat, 17 Mar 2012 14:01:53 +0100
    Organization: Netia S.A.
    Lines: 77
    Message-ID: <jk221o$5ii$1@mx1.internetia.pl>
    References: <4f647cff$0$1273$65785112@news.neostrada.pl>
    NNTP-Posting-Host: 93-181-131-177.internetia.net.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1331989368 5714 93.181.131.177 (17 Mar 2012 13:02:48 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Sat, 17 Mar 2012 13:02:48 +0000 (UTC)
    In-Reply-To: <4f647cff$0$1273$65785112@news.neostrada.pl>
    X-Tech-Contact: u...@i...pl
    User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111114
    Icedove/3.1.16
    X-Server-Info: http://www.internetia.pl/
    Xref: news-archive.icm.edu.pl pl.comp.programming:196120
    [ ukryj 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 */

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: