Tuossa on yksi vihje jos tarvitsee paljon nopeutta.

registerint

Jossain silmukassa esim, niin voi määritellä aluksi jo:

register int muuttuja;)

tällöin tuo muuttuja laitetaan prosessorin rekistereihin suoraan, jotta ei tarvitse muistista hakea.

12

158

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • pcmuseo

      Kyllä tuon pitäisi mennä automaattisesti, jos optimointitaso on oikein.
      .lst:stä normi muuttuja:
      ;---- Variable 'pHeader' assigned to Register 'R14/R15' ----

      Mutta hitaammaksi saa sitten volatilella, mutta näiden ero on hyvä käsittää varsinkin jos on cachea, liukuhihna, DMA ja keskeytykset käytössä.

      t:p

    • Oh uh

      Käytä mielellään useita muuttujia. Joka ohjelmassa ainakin viittä.

    • 8+1

      Rekistereiden kanssa kannattaa muistaa, että register-muuttujat on muilta muuttujilta poissa. Paikallinen nopeutuminen onkin globaalia hidastumista, jos niitä käyttää väärin..
      Kääntäminen muistuttaakin jonkin verran tetriksen peluuta, kun sitä tarpeeksi kieroin silmin katsoo..

    • Aatteleppa-ite

      Jos tarvii paljon nopeutta kannattaa käyttää kunnon kääntäjää ja kirjoittaa koodia joka kääntäjän on helppo ymmärtää.

      Kaikki laajimmassa käytössä olevat C-kääntäjäjät jättää suurimman osan näistä vihjeistä huomiotta (jos et liputa erikseen että tiedän mitä teen) juuri siksi että kehittäjät tietävät koneen pystyvän jo huomattavasti ihmistä parempaan optimointiin kun on kyse softasta jota on tarkoitus ajaa edes muutamalla eri prosessorilla...

      Hasukaa ajavietettähän sekin voi olla kun optimoi kaikille eri prosessoreille tuon oman softan käsipelillä jotta "raskaassa" loopissa menisi 10000ns eikä 10201ns.

    • Nikkari

      Tän päivän kääntäjät optimoi eli mahdollisesti pystyt saamaan hidasta koodia aikaan, jos lähdet optimoimaan kääntäjää vastaan.

    • kumma_että_toimii

      Tiedä häntä. Nykyään kääntäjät tekevät useimmiten hyvää työtä, mutta hallittavia arkkitehtuureja on niin paljon, että joissakin tilanteissa näyttää käyvän pahoja mahalaskujakin.. Toisaalta, jos prosessori on yksinkertainen, koodi on assemblerina katsottuna kaunista, eikä sisällä ainuttakaan ylimääräistä riviä. Ainoa optimointi, mitä joutuu kuitenkin tekemään on käskyjen järjestyksen optimointi: Kääntäjä kun ei voi tietää, mitä tarkoitusta varten jokin asia asetetaan esim. keskeytyksessä IO-porttiin..
      Myöskään cache-algoritmit eivät aina ole sellaisia kuin pitäisi ja saavat yhdellä arkkitehtuurilla toimivan (30 framea/s) ohjelman pyörähtämään toisella hitaammin (2 framea/s). Mitä isompi ohjelma, sitä todennäköisempi cache-miss väärässä paikassa. Joskus em. ilmiön saa aikaan esim. selaimessa asentamalla väärän pluginin, joka täyttää cachen väärään aikaan ja siten tekee tyhjäksi optimoinnit..
      Osasyyllinen saattaa olla myöskin käyttöjärjestelmä: Jostain syystä väärin tunnistuneen laitteen asetukset tehdään väärään moodiin, mikä aiheuttaa laitteen käytön 10%:lla aiotusta nopeudesta..

      • Tuon tason optimointi että prosessorien välimuistit ja rekisterit merkitsisi jossain tilanteissa jotain, on aika pitkälti 90-lukua. Niissä tilanteissa joissa tarvitsi jotain erityisiä reaaliaikaisuusvaatimuksia.

        Käytännössä taas lähes kaikessa ohjelmoinnissa mikään prosessorista riippuva suorituskykyoptimointi ei ole ollut merkittävää 8-bit vehkeet pois lukien 80-luvun alkupuolen jälkeen. Silloin nimittäin yleistyi 16-bittiset tehokkaammat prosessorit ja edulliset Pascal/C kääntäjät. Silloinkin muistikapasiteetti oli se minkä kanssa optimointiin, ei niinkään prosessori.

        90-luvun alkupuolelta lähtien muistia oli yleisesti niin paljon käytössä, että jos ylimääräistä muistia on niin sitä on käytetty vähentämään levytoimintoja. Yleinen optimointikaava oli että varataan ohjelmalle mustia 2^x määrä mukaan mitä tarvitsee, olkoot se sitten 2 megaa tai 512 megaa, mitä nyt tarvitseekaan ja "väljä" tila siellä muistinkäytössä sitten jätetään minimoimaan IO:ta.

        90-puolivälissä sitten WWW yleistyi ja tärkein optimointikohde on ollut vähentää HTTP kyselyjä ja kaistan käyttöä. Sitten tulleet IOPS:t mikäli muistia vaan riittänyt prosessori vasta lopuksi. Rekisterit ja cachet eivät käytännössä ole olleet merkittäviä.

        Tämän lisäksi, suorituskykyoptimoinnin edelle on mennyt koodin rakenteen optimointi kun se vaikuttaa kaikkiin koodin/ohjelman laatuun liittyviin asioihin, suorituskyky mukaan lukien.

        Miksi sillä prosessorilla ei ole niin väliä johtuu yksinkertaisesti siitä, että prosessorin ja kääntäjien suorituskyky kasvaa kaiken aikaa valtavalla vauhdilla. Niinhän ne muutkin asiat parantuvat mutta vuosikymmeniä juurikin se miten prosessori toimii on tehostunut eniten tai jos ei vauhtia ole tullut lisää niin hyötysuhde on parantunut eniten. Tästä syystä on kannattavaa kuormittaa prosessoria enemmän jos sillä vähennetään kaistaa, joko tallennuksen tai verkon läpi. Jopa muistikaistan käyttöä kannattaa optimoida prosessoria kuormittamalla käyttämällä reaaliaikaista datakompressiota. Näin on kannattanut tehdä jo 80-luvulla.


      • haluu_tietää

        "käyttämällä reaaliaikaista datakompressiota"

        Mites tuo parhaiten tehdään Ubuntussa?


      • lumputus

        Kaippa tuolla yritetään muistin kulutusta jotenkin rajoittaa. Loogisin paikka sille taitaa olla cache-osion muistijatke:
        http://en.wikipedia.org/wiki/Zram
        Vai onko muita, jotka toimisivat vielä paremmin?


      • haluu_tietää kirjoitti:

        "käyttämällä reaaliaikaista datakompressiota"

        Mites tuo parhaiten tehdään Ubuntussa?

        No esimerkiksi vaikka rsync:n valitsin -z


    • koodi-pete

      Mielestäni optimointia on se että autossa on keraaminen (ceramic) ratti ja libasto. Lämpenee kylmillä keleillä ja mukava kämmenille.

      Siihen päälle vielä vaikka optimoidut rekisteri-kilvet, kyllä kelpaa. Menee 80 km/h sijaan ainakin 82 km/h.

      mmmts. siis vitsi.

    • KUMMARRELKAA

      OHO! MEillähän on täällä MELKOENEN HGUERU!!!

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

    Luetuimmat keskustelut

    1. Mitä siellä ABC on tapahtunut

      Tavallista isompi operaatio näkyy olevan kyseessä.
      Alajärvi
      151
      6294
    2. Kuvaile elämäsi naista

      Millainen hän on? Mikä tekee hänestä sinulle erityisen?
      Ikävä
      48
      1743
    3. Klaukkalan onnettomuus 4.4

      Klaukkalassa oli tänään se kolmen nuoren naisen onnettomuus, onko kellään mitään tietoa mitä kävi tai ketä onnettomuudes
      Nurmijärvi
      38
      1404
    4. Kuvaile elämäsi miestä

      Millainen hän on? Mikä tekee hänestä sinulle erityisen?
      Ikävä
      45
      1018
    5. Ukraina ja Zelenskyn ylläpitämä sota tuhoaa Euroopan, ei Venäjä

      Mutta tätä ei YLE eikä Helsingin Sanomat kerto.
      Maailman menoa
      324
      1009
    6. Kolari Klaukkala

      Kaksi teinityttö kuoli. Vastaantulijoille ei käynyt mitenkään. Mikä auto ja malli telineillä oli entä se toinen auto? Se
      Nurmijärvi
      45
      913
    7. Ooo! Kaija Koo saa kesämökille öky-rempan:jättimäinen terde, poreallas... Katso ennen-jälkeen kuvat!

      Wow, nyt on Kaija Koon mökkipihalla kyllä iso muutos! Miltä näyttää, haluaisitko omalle mökillesi vaikkapa samanlaisen l
      Kesämökki
      13
      899
    8. Kevyt on olo

      Tiedättekö, että olo kevenee kummasti, kun päästää turhista asioista tai ihmisistä irti! Tämä on hyvä näin <3
      Ikävä
      84
      866
    9. Toivoisin, että lähentyisit kanssani

      Tänään koin, että välillämme oli enemmän. Kummatkin katsoivat pidempään kuin tavallisesti toista silmiin. En tiedä mistä
      Ikävä
      14
      857
    10. Olisinpa jo siellä, otatkohan minut vastaan

      Olisitpa lähelläni ja antaisit minun maalata sinulle kuvaa siitä kaikesta ikävästä, tuskasta, epävarmuudesta ja mieleni
      Ikävä
      75
      845
    Aihe