While tai For mitä eroa?

Jokerer

Kyseessä on siis C kieli. Onko mitään nopeus jne... eroa jos käyttää for tai while looppia?

Luuppi pyörii kymmeniä miljoonia kertoja.

6

678

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • c-kuru

      while on nopiampi, koskapa se suorittaa lohkon yhden kerran tarkistammatta ehtoa....

      Etu on mittava, jos silmukka pyörii kymmeniä moljoonia kertoaj ;)

      • Siis mitä ihmettä ? Kyllä se while tarkistaa aina annetun ehdon ennen kuin lohkoa aletaan suorittamaan. Eihän siinä edes olisi mitään järkeä, jos while ei tarkistaisi sitä ehtoa joka kierroksella.

        Sen sijaan do { ... } while(...) ajaa lohkon aina vähintään kerran, jos sitä tarkoitit.


    • Unrolling

      Riippuu kääntäjästä. Tietenkin käytät kaikkia optimointioptioita (heh) ja kehotat erityisesti unrollaamaan silmukat, mikä vaikkapa gcc:llä tapahtuu optiolla -funroll-loops (tjsp).

      Sitten testaat, ja pidät nopeimman löytämäsi version koodissa. Niin se käy. Ei tuohon voi antaa yleistä vastausta, koska eri kääntäjä tekee eri ratkaisuja.

      Arvaisin kyllä, että hyvä kääntäjä tuottaisi samaa koodia kummastakin silmukasta, jos logiikka on muuten vastaava. Vaan ei sitä tiedä, ellei kokeile.

      Jos epäilet, että joudut käsin ohjelmoimaan, for-silmukka lienee helpompi unrollata käsin. Loop unrolling on hyvä googlehakutermi, jos et todellakaan tiedä msitä puhun.

    • hakoteillä

      ohjelmissa ongelmat ovat ihan muualla kuin tuossa kysymyksessä.

    • jep jep

      pistä looppi laskemaan alaspäin

      int loop = 500;


      do {

      } while ((--loop) != 0);

      nollan tarkistaminen on helpompaa (etenkin -- jälkeen) kuin ehdon i < 500.

      mutta kuten tuolla on mainittu kannataa viilata algorytmiä, tämä on pilkun viilausta.

    • Jokerer

      Kiitoksia kaikille. Siis for ja while ei ole nopeus eikä muutakaan eroa ja on ihan makuasia kumpaa käyttää. En varsinaisesti kaipaa nopeutta ohjelmaani lisää, mutta koodaus vaiheessa on ihan sama kumman naputtelee joten aattelin vain varmistaa kumpaa kannattaa käyttää. Ja periaatteessa nopeutta ei ole koskaan likaa.

      Ainakin PHP kanssa kehotetaan käyttää while for sijasta koska se on nopeempa isommissa loopeissa. Joskin PHP on PHP.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Marin on ehkä maailman kaunein "Nelikymppinen"

      Marinin julkaisu on saanut yli 68 500 tykkäystä. Postauksen kommenttikentässä ylistetään paljon Marinin kauneutta, jota
      Maailman menoa
      327
      2742
    2. Vernu Vasunta

      On mahotonta miten marjanpoimijoita on kohdeltu! Eikö paremmalla kohtelulla olisi saanut paremman tuloksen?
      Suomussalmi
      89
      2045
    3. En kelpaa sinulle

      Varattuna - olen sinulle ongelma. Eroaminen vuoksesi voi olla turhaa, sillä me ei puhuta, kun olen varattu ja kumpikin v
      Ikävä
      120
      1600
    4. Taidat vanhempi nainen

      Haluta sen tien itsellesi. juokse vaan karkuun ! Pahentaa vaan asiaa.Pitäs toimia ihan toisin päin
      Ikävä
      73
      1144
    5. Hetkeäänkään miettimättä ottaisin sinut

      Mutta mitä mieltä miehesi siitä olisi?
      Ikävä
      71
      1012
    6. Olisi kiva tietää miksi pidät minusta?

      Miehelle kysymys :)
      Ikävä
      61
      973
    7. Voi nainen...

      Kun luovutit meistä liian aikaisin, just kun aloin oppimaan sinua. Jos oisin alussa jo lukenut aiheesta oisin voinut toi
      Ikävä
      41
      940
    8. Venäjä aikoo yksipuolisesti muuttaa rajalinjauksia Suomenlahden itäosassa

      Venäjä aikoo muuttaa rajalinjauksia Suomenlahden itäosassa Venäjän saarten eteläpuolella. Ylen jutussa kerrotaan mm.
      Maailman menoa
      143
      873
    9. Suomi lähettää tarkkailijoita merialueelle

      Venäjä on ilmoittanut aikovansa ylittää Suomen merialueen rajat kysymättä lupaa kertomalla että Suomen merialueen raj
      Maailman menoa
      290
      832
    10. Naiselle kysymys

      Mitä oikein näet minussa?
      Ikävä
      40
      734
    Aihe