eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingSkładnia pętli (ogólnie i filozoficznie)Składnia pętli (ogólnie i filozoficznie)
  • Data: 2012-03-17 12:01:02
    Temat: Składnia pętli (ogólnie i filozoficznie)
    Od: "slawek" <s...@h...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    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.






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: