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

108

    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. Mielessäni vieläkin T

      Harmi että siinä kävi niinkuin kävi, rakastin sinua. Toivotan sulle kaikkea hyvää. Toivottavasti löydät sopivan ja hyvän
      Ikävä
      33
      1425
    2. 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
      1301
    3. Nähtäiskö ylihuomenna taas siellä missä viimeksikin?

      Otetaan ruokaöljyä, banaaneita ja tuorekurkkuja sinne messiin. Tehdään taas sitä meidän salakivaa.
      Ikävä
      2
      1214
    4. Ei luottoa lakko maahan

      Patria menetti sovitun ksupan.
      Suomen Keskusta
      4
      1212
    5. Persut petti kannattajansa, totaalisesti !

      Peraujen fundamentalisteille, vaihtkaa saittia. Muille, näin sen näimme. On helppo luvata kehareille, eikä ne ymmärrä,
      Maailman menoa
      0
      1196
    6. Sinäkö se olit...

      Vai olitko? Jostain kumman syystä katse venyi.. Ajelin sitten miten sattuu ja sanoin ääneen siinä se nyt meni😅😅... Lis
      Ikävä
      0
      1194
    7. Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita

      Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita – neljä Jyväskylän Outlaws MC:n jäsentä vangittu: "Määrät p
      Jyväskylä
      41
      1188
    8. Housuvaippojen käyttö Suomi vs Ulkomaat

      Suomessa housuvaippoja aletaan käyttämään vauvoilla heti, kun ne alkavat ryömiä. Tuntuu, että ulkomailla housuvaippoihin
      Vaipat
      2
      1164
    9. Hyvää yötä ja kauniita unia!

      Täytyy alkaa taas nukkumaan, että jaksaa taas tämän päivän haasteet. Aikainen tipu madon löytää, vai miten se ärsyttävä
      Tunteet
      2
      1150
    10. Lepakot ja lepakkopönttö

      Ajattelin tehdä lepakkopöntön. Tietääkö joku ovatko lepakot talvella lepakkopöntössä ´vai jossain muualla nukkumassa ta
      1
      1136
    Aihe