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

715

    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. Toiselle puolikkaalleni

      Sinulla ei taida olla kaikki nyt ihan hyvin? Minua itketti eilen kauheasti, sinunko itkuja itkin? Kyllä kaikki selviää j
      Ikävä
      42
      2224
    2. Pysy kaukana musta

      Ja kaikista mun läheisistä. Oon tosissani.
      Ikävä
      24
      1780
    3. Katu täyttyy askelista...

      Hyvää sunnuntaita ja hyvää jatkoa jos näin...Vettä sataa, mutta hyvä vaan, ainakin kasveille.
      Ikävä
      27
      1435
    4. Kuvaile kaivattusi

      ulkonäköä. 💡
      Ikävä
      109
      1264
    5. Näin susta unta

      Teit siinä temppuja ja kurkit huomaanko. Niinkuin sun tarttis sitä epäillä. Öitä tuimalle!
      Ikävä
      15
      1229
    6. Mitä hämminkiä Halkokarilla?

      Poliiseja ja ambulansseja pyörii, laukauksia kuultu.
      Kokkola
      18
      1035
    7. Tiedätkö nainen sen tunteen

      Kun toinen tulee jossain vastaan. Naama leviää hymyyn kuin hangonkeksi. Mulla on susta semmonen,tunne.
      Ikävä
      71
      944
    8. Kauniit ihmiset ei ole sinkkuja, se on karu fakta

      Ihmisessä on lähes poikkeuksetta aina jotain vikaa jos hän pysyy sinkkuna pitkään. Sori kun sanon tän näin suoraan, mut
      Ikävä
      107
      864
    9. Kristinusko - epätoivoinen yritys pelastaa ihmiset jumalalta

      Ei ole mitään sellaista, mitä pitää "pelastua". Lukuun ottamatta tietysti ”jumalan” (sen ei jumalan, joka väittää oleva
      Hindulaisuus
      333
      853
    10. Mikset päästä irti ja hae apua

      Mt ongelmiisi. En vaan voi ikinä enää luottaa sinuun, pelkään sinua ja toivon löytäväni jonkun muun. Rahaa sulla on saad
      Ikävä
      74
      846
    Aihe