Onko npopeus eroa tallentaako esim. 3x3 matriisin taulukkoon, jossa on yhdeksän solua putkeen tai 3 solua ja kussakin 3 lisää vai tekisi kaikista soluista muuttujia tyylii s11,s12,s13,s21,s22,s23,s31,s32 ja s33.
Eli koodi jossa tuota käytetään on jotain tälläistä
float[][] t1 = float[3][3]; return t[0][0]*t[1][1]*t[2][2] ... float[] t2 = float[9]; return t[0]*t[4]*t[8]...; float s11,s12,s13,s21,s22,s23,s31,s32, s33; return s11*s22*s33...;
Tein omia testejä tuosta ja aavistuksen saattaisi olla tuo viimmeinen nopeampi, mutta yleinen hajonta oli kuitenkin samaa luokkaa. Tutkin joitakin "optimoituja" c-koodeja joissa myös käytettiin viimmeistä jonkin verran.
Vaikka noilla nyt joku marginaalinen ero oiskin, on taulukon käyttömukavuus niin paljo suurempi, ettei tuollaisiin virityksiin kannata alkaa.
Varmasti se marginaalinen erokin on hyvin paljon kiinni kääntäjän kyvyistä. Jos taulukko on määritelty juuri tuon kokoiseksi, kääntäjä osannee optimoida koodin jotakuinkin samaksi kuin irtomuuttujilla. Itse todennäköisesti päädyn käyttämään 3x3-matriisin tallentamiseen kolmea vektoria, koska kyseinen esitysmuoto sattuu helpottamaan käyttöä tiettyihin tarkoituksiin.
Taulukoita käytettäessä mutuilisin, että nopeuseroa tulee muuttujiin suunnilleen yhden kertolaskun verran tai ei lainkaan, mutta se on niin mitätön että ei ole mitään syytä käyttää erillisiä muuttujia.
Taulukoita käyttäessä kääntäjä mitä todennäköisimmin luo STORE eli muistitallennus-käskyjä, kun taulukkoon sijoittaa arvoja. Erillisillä muuttujilla sen sijaan saatetaan pärjätä sillä, että muuttujat pysyvät jatkuvasti rekistereissä (olettaen, että alkioita on tarpeeksi vähän) eikä hitaita muistitallennuksi tai -latauksi tarvita. Tällä saattaa tietyissä tapauksissa olla merkittävä nopeusero.
Aika harvoin tulee kuitenkaan eteen oikeita tilanteita, joissa optimointi olisi oikeasti niin tärkeää, että koodin siisteydestä kannattaisi tinkiä nopeuden takia.
Toisaalta kieltenkin eroja täytyy ottaa huomioon. VB6:ssa on hieman ikävästi, että moniulotteiset taulukot ovat huomattavasti hitaampia kuin yksiulotteiset. Lisäksi nollapohjaiset taulukot ovat (ymmärrettävästikin) nopeampia kuin muihin lukuihin pohjautuvat taulukot. Eroa on niin paljon, että jos kyse on esimerkiksi grafiikan käsittelystä, on nollapohjaisen yksiulotteisen taulukon käyttö ainoa vaihtoehto, varsinkin jos tietoa käsitellään esim. koko ruudun kokoisella alalla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.