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

685

    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. 57-vuotiads muka liian vanha töihin?

      On tämä sairas maailma. Mihin yli 55-vuotiaat sitten muka enää kelpaavat? Hidasta itsemurhaa tekemään, kun eläkkeelle ei
      Maailman menoa
      345
      4088
    2. Haluatteko miellyttää kumppaninne silmää?

      Entä muita aisteja? Mitä olette valmiita tekemään sen eteen että kumppani näkisi teissä kunnioitettavan yksilön? Olette
      Sinkut
      278
      2307
    3. By the way, olet

      mielessäni. Olet minulle tärkeä, niin suunnattoman tärkeä. En kestäisi sitä jos sinulle tapahtuisi jotain. Surullani ei
      Ikävä
      129
      1650
    4. Onko kaivattunne suosittu?

      Onko teillä paljon kilpailijoita? Mies valitettavasti näyttää olevan paljonkin naisten suosiossa :(
      Ikävä
      97
      1431
    5. J-miehelle toivon

      Hyvää yötä. Voisiko nykyistä tilannetta uhmaten vielä pienintäkään toivetta olla, päästä kainaloosi joskus lepääämään.
      Ikävä
      85
      1403
    6. Täytyi haukkuu sut lyttyyn

      En haluu tuntee rakkautta sua kohtaan enää ja haluun unohtaa sut mut sit tulee kuiteki paha olo kun haluis vaan oikeesti
      Ikävä
      61
      1267
    7. Haluatko S

      vielä yrittää?
      Ikävä
      59
      1238
    8. Kylpyläsaaren Lomakylän kahvilaravintola

      Kävimme syömässä Kylpyläsaaressa. "Naudanliha burgeri" maksoi 18,90 euroa ja lisäksi limsa 4,50 euroa. Annoksen hinnaks
      Haapavesi
      54
      1110
    9. Onkohan sulla enää tunteita

      kun nähdään seuraavan kerran? Niin hyvä fiilis on ollut viime aikoina, että se on nyt pahin pelkoni. Oletkohan unohtanut
      Ikävä
      36
      1074
    10. Rakkauden riemuvoitto

      Valta voidaan voittaa tiedolla. Mutta tieto on huonompi kuin kauneus, hellyys ja rakkaus. Siksi kauneus on vallan ja tie
      Hindulaisuus
      343
      1006
    Aihe