-
Data: 2012-03-17 16:19:18
Temat: Re: Składnia pętli (ogólnie i filozoficznie)
Od: Roman W <b...@g...pl> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- 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
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-14 światła znów wlączyli
- 2024-12-14 nie lekceważ termostatu
- 2024-12-14 numer 112
- 2024-12-14 Pendrive, ale dysk
- 2024-12-12 Autocom CAN CDP+ wysokie kody błędów
- 2024-12-13 termostat do lodowki
- 2024-12-13 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-13 Warszawa => Head of International Freight Forwarding Department <=
- 2024-12-13 Poznań => Employer Branding Specialist <=
- 2024-12-13 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-13 Kraków => Business Development Manager - Network and Network Security
- 2024-12-13 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-13 Gdańsk => Programista Full Stack .Net <=
- 2024-12-13 Warszawa => Analityk Biznesowo-Systemowy <=
- 2024-12-13 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A