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

107

    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. Heikki Silvennoinen petti vaimoaan vuosien ajan

      Viiden lapsen isä Heikki kehuu kirjassaan kuinka paljon on pettänyt vaimoaan vuosien varrella.
      Kotimaiset julkkisjuorut
      174
      3184
    2. Miksi ihmeessä nainen seurustelit kanssani joskus

      Olin ruma silloin ja nykyisin vielä rumempi En voi kuin miettiä että miksi Olitko vain rikki edellisestä suhteesta ja ha
      Ikävä
      24
      2131
    3. Taasko se show alkaa

      Koo osottaa taas mieltään
      Ikävä
      23
      2054
    4. Persut nimittivät kummeli-hahmon valtiosihteeriksi!

      Persujen riveistä löytyi taas uusi törkyturpa valtiosihteeriksi! Jutun perusteella järjenjuoksu on kuin sketsihahmolla.
      Perussuomalaiset
      90
      1905
    5. Onko ministeri Juuso epäkelpo ministerin tehtäviensä hoitamiseen?

      Eikö hänellä ole kompetenttia hoitaa sosiaali- ja terveysministetin toimialalle kuuluvia ministerin tehtäviä?
      Perussuomalaiset
      70
      1588
    6. Sakarjan kirjan 6. luku

      Jolla korva on, se kuulkoon. Sain profetian 22.4.2023. Sen sisältö oli seuraava: Suomeen tulee nälänhätä niin, että se
      Profetiat
      24
      1351
    7. Avaa sydämesi mulle

      ❤ ❤❤ Tahdon pelkkää hyvää sulle Sillä ilmeisesti puhumalla Avoimesti välillämme Kaikki taas selviää Kerro kaikki, tahdo
      Ikävä
      36
      1247
    8. Söpö lutunen oot

      Kaipaan aina vaan, vaikkakin sitten yksipuolisesti.
      Ikävä
      8
      1241
    9. Elia tulee vielä

      Johannes Kastaja oli Elia, mutta Jeesus sanoi, että Elia tulee vielä. Malakian kirjan profetia Eliasta toteutuu kokonaan
      Helluntailaisuus
      35
      1207
    10. Nellietä Emmaa ja Amandaa stressaa

      Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k
      Isovanhempien jutut
      6
      1188
    Aihe