Tuli tässä ohimennen mieleen kun pyörittelin asioita mielessäni, että vaikuttaako taulukon koko sen lukunopeuteen? Esim. jos koodissa lukee
x=taulu [10][10];
onko tehtävä nopeammin suoritettu, jos taulu on alustettu 50*50-kokoiseksi kuin jos se olisi 2000*2000? Samalla kysyn, toimiiko SDL_Surface samalla tavalla.
Luultavasti epäsuorasti vaikuttaa. Eli jos taulukko on niin suuri että se joudutaan sivuttamaan niin kyllähän se hidastuu - levyoperaatiot ovat hitaampia kuin muistioperaatiot.
Mutta varsinaisesti ei vaikuta, joka tapauksessa täytyy suorittaa samat operaatiot. Tietyissä erikoistapauksissa kääntäjä voi yrittää optimoida hassusti esimerkiksi niin, että jokin kahdella kertominen muuttuukin bittisiirroksi, mutta todistettavasti tällaisen optimoinnin lopputulos voi toisinaan olla katastrofaalinen. Eräässä tekemässäni ohjelmointitehtävässä ohjelmani nopeus puolittui, jos taulukon kooksi asetti jonkin 256:lla jaollisen luvun.
Mutta siis varsinaisesti ratkaiseva asia on vain se, sattuuko luettava asia olemaan valmiiksi prosessorin välimuistissa, keskusmuistissa vai kovalevyllä. Tässä ei ole sinänsä kyse taulukon koosta vaan siitä, mitä asioita muistista on viimeksi tarvittu (jotain lähialueen asioita vai suuri määrä kaikkea paljon kauempana olevaa), mutta toki suurikokoinen taulukko lisää mahdollisuuksia, että juuri se käytettävä kohta ei olekaan enää kaikkein nopeimmin luettavassa paikassa.
Vielä tiivistelmä: yleensä ei, ja SDL_Surface tosiaan toimii samalla tavalla (paitsi tuon kääntäjän optimoinnin kannalta, kun kääntäjä ei etukäteen tiedä mittoja).
Kiitos vastauksista! Tästä tiedosta on paljon apua tämänhetkisessä projektissani.
Aihe on jo aika vanha, joten et voi enää vastata siihen.