koodin nopeus

Miten voin tarkastaa, kauanko jonkun koodin suorittamiseen menee aikaa? Esimerkiksi jos lataan jonkun tiedoston Java-koodista käsin, niin miten voin tsekata, kauanko tuo lataaminen kestää? Antaako oikeansuuntaisen tulosken jos laittaa alko ja loppu päähän koodia currenTimemillis() ja sitten lopussa tsekkaa erotuksen?
2308
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Javasta en tiedä mitään, mutta tolla tavalla se onnistuu, siis koodin alussa otat talteen ajan ja lopussa myös ja lasket sen erotuksen, mutta kannattaa esim 10 kertaa suorittaa koodi, ja laskea siitä keskiarvo, näin saadaan minimoitua heittelyt jne.... Mutta yhestäkin suorituskerrasta näkee onko koodi hidas vai ei.

Äänestä
  • > mutta kannattaa esim 10 kertaa suorittaa koodi, ja laskea siitä keskiarvo, näin saadaan minimoitua heittelyt jne....

    Tai sitten ei.

    Riippuu lähinnä siitä missä koodia on tarkoitus käyttää. Tuo nimittäin saattaa aiheuttaa esim. sen että 90% tavarasta haetaankin välimuistista eikä levyltä, tms. Jos ohjelmalla sitten luetaankin vaikka satunnaisia tiedostoja tunnin välein, niin keskiarvo saattaa heittää todella paljon alkuperäisestä.

    Mielestäni paras ratkaisu on pyörittää koodia jonkin aikaa lopullisessa käytössä tai sitä vastaavassa ympäristössä ja ottaa noita aikoja ylös (ja tallettaa johonkin, tms). Tosin noidenkin käsittely hidastaa, joten jos todella aikakriittisestä hommasta on kyse (ilmeisesti jos sekunnin sadasosia pitää hioa), joten kannattaa ne sitten "lopullisesta" versiosta poistaa.

    Äänestä

Kommentoi aloitusta


Asus kirjoitti:

Miten voin tarkastaa, kauanko jonkun koodin suorittamiseen menee aikaa? Esimerkiksi jos lataan jonkun tiedoston Java-koodista käsin, niin miten voin tsekata, kauanko tuo lataaminen kestää? Antaako oikeansuuntaisen tulosken jos laittaa alko ja loppu päähän koodia currenTimemillis() ja sitten lopussa tsekkaa erotuksen?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu