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.
Tuossa on yksi vihje jos tarvitsee paljon nopeutta.
12
158
Vastaukset
- 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
- 1516294
- 481743
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ä onnettomuudes381404- 451018
Ukraina ja Zelenskyn ylläpitämä sota tuhoaa Euroopan, ei Venäjä
Mutta tätä ei YLE eikä Helsingin Sanomat kerto.3241009Kolari Klaukkala
Kaksi teinityttö kuoli. Vastaantulijoille ei käynyt mitenkään. Mikä auto ja malli telineillä oli entä se toinen auto? Se45913Ooo! 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 l13899Kevyt on olo
Tiedättekö, että olo kevenee kummasti, kun päästää turhista asioista tai ihmisistä irti! Tämä on hyvä näin <384866Toivoisin, 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ä14857Olisinpa jo siellä, otatkohan minut vastaan
Olisitpa lähelläni ja antaisit minun maalata sinulle kuvaa siitä kaikesta ikävästä, tuskasta, epävarmuudesta ja mieleni75845