Nopeuserot for

to do in do

Tuleeko nopeuseroja jos käyttää
perinteistä for-lausetta
(for to do )
verrattuna sitä for in (for in do)
lauseeseen?


Mitä etuja tuo for in do tarjoaa

9

350

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • -for looppaus-

      Noiden käyttötarkoitus ei ole varsinaisesti ihan sama, for to- on yleis käyttöinen, for in on lähinnä taulukoiden läpikäymiseen joka tuli D2005:sessa, ja joka vastaa pitkälle esim php:n foreach rakennetta.

      • For in:llä?

        Lähinnä kiinnostaa pystytäänkö tuolla
        for in -rakenteella saamaan nopeus hyötyä verrattuna
        vastaavaan for to -rakenteeseen.
        (tuskin kovinkaan paljoa)

        Eli kysy on lähinnä siitä pystyykö kääntäjä hyödyntämään jotain parempia assembler -käskyjä verrattuna for to-rakenteeseen


      • -for looppaus-
        For in:llä? kirjoitti:

        Lähinnä kiinnostaa pystytäänkö tuolla
        for in -rakenteella saamaan nopeus hyötyä verrattuna
        vastaavaan for to -rakenteeseen.
        (tuskin kovinkaan paljoa)

        Eli kysy on lähinnä siitä pystyykö kääntäjä hyödyntämään jotain parempia assembler -käskyjä verrattuna for to-rakenteeseen

        No luultavasti jonkun verran nopeutuu kun kahlattava taulukkomainen tietomäärä ja indeksointi hoidetaan funktion sisäisesti, ainakin lähes varmuudella nopeammin kuin käyttäjän huonosti toteuttama perinteinen for to funktio.

        Testaa itse, sehän ei ole vaikea homma esim Gettickcount -funktiolla.


      • to do in do
        -for looppaus- kirjoitti:

        No luultavasti jonkun verran nopeutuu kun kahlattava taulukkomainen tietomäärä ja indeksointi hoidetaan funktion sisäisesti, ainakin lähes varmuudella nopeammin kuin käyttäjän huonosti toteuttama perinteinen for to funktio.

        Testaa itse, sehän ei ole vaikea homma esim Gettickcount -funktiolla.

        No minulla ei ole vielä tarpeeksi uutta Delphiä jotta voisin testata tuota.


      • -for looppaus-
        to do in do kirjoitti:

        No minulla ei ole vielä tarpeeksi uutta Delphiä jotta voisin testata tuota.

        Kuinka uus sen sitte pitäis olla kun toi on winapi funktio joka on ollut jo delphi 1:sestä käytössä, joskus esihistorialisella ajalla, for in funktio taas tuli vasta 2005 delphiin oliko toi nyt sitte delphi 10.
        Näin
        ...
        var alku, aika;
        ...
        alku:= gettickcount;
        //tee jotain mitattavaa tässä välissä
        aika:=gettickcount-alku;
        //aika on on nyt millisekunteja alusta


      • -for looppaus-
        -for looppaus- kirjoitti:

        Kuinka uus sen sitte pitäis olla kun toi on winapi funktio joka on ollut jo delphi 1:sestä käytössä, joskus esihistorialisella ajalla, for in funktio taas tuli vasta 2005 delphiin oliko toi nyt sitte delphi 10.
        Näin
        ...
        var alku, aika;
        ...
        alku:= gettickcount;
        //tee jotain mitattavaa tässä välissä
        aika:=gettickcount-alku;
        //aika on on nyt millisekunteja alusta

        siis
        ..
        var alku, aika: cardinal;
        ..


      • GetTickCount
        -for looppaus- kirjoitti:

        No luultavasti jonkun verran nopeutuu kun kahlattava taulukkomainen tietomäärä ja indeksointi hoidetaan funktion sisäisesti, ainakin lähes varmuudella nopeammin kuin käyttäjän huonosti toteuttama perinteinen for to funktio.

        Testaa itse, sehän ei ole vaikea homma esim Gettickcount -funktiolla.

        GetTickCount -funktio löytyy Lazaruksestakin LCLIntf käännösyksiköstä (Siis Uses -lauseeseen pitää lisätä LCLIntf).

        GetTickCount -funktio toimii siis myös muissakin käyttöjärjestelmissä kuin windows kuten esim. Linux:ssa


      • Todennäköisesti
        -for looppaus- kirjoitti:

        siis
        ..
        var alku, aika: cardinal;
        ..

        Todennäköisesti hän tarkoittaa sellaista Delphiä josta puuttuu For in käsky mutta haluaa tietää sen nopeuden.


      • Mika0800
        GetTickCount kirjoitti:

        GetTickCount -funktio löytyy Lazaruksestakin LCLIntf käännösyksiköstä (Siis Uses -lauseeseen pitää lisätä LCLIntf).

        GetTickCount -funktio toimii siis myös muissakin käyttöjärjestelmissä kuin windows kuten esim. Linux:ssa

        Lazarus ja GetTickCount

        Lazaruksen windows -versiossa tuo varmasti toimiikin oikein.

        mutta kokeilepa Lazaruksen linux -versiossa tätä:

        OdotaKunnesKloOn_235959(); // tämä siis odottaa, kunnes kello on 23:59:59

        T1 := GetTickCount;

        TeeJotainJokaKestaa2300milliSekuntia;


        T2 := GetTickCount;

        dT := T2-T1;

        Veikkaanpa, että Lazaruksen linuxversio joko:

        a) antaa tulokseksi 2 sekuntia

        b) antaa tulokseksi 3 sekuntia

        c) antaa totaalisesti väärän tuloksen, kun hämääntyy pahasti vuorokauden vaihtumisesta.

        Toinen, vielä pahemi testi:

        T1 := GetTickCount;

        TeeJotainJokaKestaa1Minuutti;

        T2 := GetTickCount;

        dT := T2-T1;

        ja tuon 1 min aikana sitten vaihdat konsoliin, jossa olet valmiiksi root -oikeuksin sisällä, ja vaihat siellä koneen kellonajan toiseksi.

        Veikkaanpa, että Lazaruksen linux -versio mokaa tässäkin.

        Alkaisi olla korkea aika linuxinkin APIin lisätä ihan 100% aito GetTickCount, joka ei hämäänny sen paremmin keskiyön ylittämisestä kuin koneen kellonajan muuttamisestakaan.

        Olen joskus itse koodannut linuxiin oman GetTickCount -funktion (sovellusohjelmnatasolla), mutta ei sekään täydellinen ole eikä voikaan olla, ilman kernel -ajuria.


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

    Luetuimmat keskustelut

    1. Voiko normaali ihminen ryhtyä vasemmistolaiseksi?

      Tätä jäin pohdiskelemaan.
      Maailman menoa
      203
      4276
    2. SDP haluaa 40 000 nettomaahanmuuttajaa

      SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah
      Maailman menoa
      146
      3808
    3. Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen

      No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat
      Maailman menoa
      137
      3261
    4. Hienoa! Eduskunta luopui käteisen käytöstä

      Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.
      Maailman menoa
      53
      1647
    5. Ikävä sinua mies

      Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i
      Ikävä
      19
      1558
    6. Mikä tämä henkilö mahtaa touhuta Parkanossa

      Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58
      Parkano
      34
      1530
    7. Sulla on avaimet ja keinot

      Jos haluat jatkaa tutustumista. Itse olen niin jäässä etten pysty tekemään enää mitään. Pidempi keppi johon on helpompi
      Ikävä
      25
      1395
    8. Orpo loukkaantui fasismiin viittaavasta sanavalinnasta

      Mutta miksi loukkaantui? Orpohan on tehnyt yhteistyötä fasistien kanssa jo vuonna 2019, siis jo neljä vuotta ennen loukk
      Maailman menoa
      27
      1351
    9. Kiinnostaa - ei kiinnosta - kiinnostaapas

      Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt
      Sinkut
      118
      1178
    10. Martina haluaa Marbellaan

      Martinan tekisi mieli ottaa lennot Marbellaan, jossa näkisisi kauniita ja hyväntuulisia ihmisiä. No sitten pitää matkust
      Kotimaiset julkkisjuorut
      216
      1071
    Aihe