Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset (I/2010)

Post by Ilkka »

xamuli wrote:Onko taulukon soluilla maksimimäärää ja jos soluja laittaa paljon, hidastaako se peliä tai käykö jotai muuta huonoa?
En tiiä onko soluilla maksimimäärää, mutta jos laitat paljon soluja ja niissä on arvot esim. 1, niin se kyllä hidastaa peliä.
Kokeileppa tätä koodia ja vaihtele muuttujien SolujaX ja SolujaY arvoja vaikkapa 30 ja 3000 väliä. Huomaa kyllä eron kuvan lataamisnopeudessa:

Code: Select all

SolujaX = 3000
SolujaY = 3000

Dim MAP(SolujaX,SolujaY)

ukko = LoadObject("media/guy.bmp")

For x = 1 To SolujaX
    For y = 1 To SolujaY
    
        MAP( x, y ) = 1
        
    Next y
Next x

Repeat

  DrawScreen 
Forever 
Image
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Tyhmät kysymykset (I/2010)

Post by MetalRain »

xamuli wrote:Onko taulukon soluilla maksimimäärää ja jos soluja laittaa paljon, hidastaako se peliä tai käykö jotai muuta huonoa?
Ainakin tietokoneen keskusmuistin koko rajoittaa. Yksi kokonaisluku vie Coolbasicissa 4 tavua. Tällöin yhteen kibitavuun mahtuu 256 kokonaislukua eli yhteen mebitavuun 262144 kokonaislukua ja gibitavuun 268435456 kokonaislukua.

Esimerkiksi koodilla:

Code: Select all

Dim taulukko(256,256,256,256)
koitettaisiin varata 4*256⁴=17179869184 tavua eli 16 gibitavua muistia, mikä tuskin kovin monella koneella onnistuu.

Luonnollisesti myös tarpeettoman suuren taulukon (jatkuva) läpikäyminen hidastaa peliä.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by axu »

MetalRain wrote:
xamuli wrote:Onko taulukon soluilla maksimimäärää ja jos soluja laittaa paljon, hidastaako se peliä tai käykö jotai muuta huonoa?
Ainakin tietokoneen keskusmuistin koko rajoittaa. Yksi kokonaisluku vie Coolbasicissa 4 tavua. Tällöin yhteen kibitavuun mahtuu 256 kokonaislukua eli yhteen mebitavuun 262144 kokonaislukua ja gibitavuun 268435456 kokonaislukua.

Esimerkiksi koodilla:

Code: Select all

Dim taulukko(256,256,256,256)
koitettaisiin varata 4*256⁴=17179869184 tavua eli 16 gibitavua muistia, mikä tuskin kovin monella koneella onnistuu.

Luonnollisesti myös tarpeettoman suuren taulukon (jatkuva) läpikäyminen hidastaa peliä.
Johtopäätös tästä on, ettei kannata mennä tekemään neliulotteista hyxelimoottoria 256 kanttiinsa kokoisella "kuvalla". heko heko.
Itse olen huomannut, että rajat eivät tule kovin äkkiä vastaan vaikka taulukkoon säilöttäisiin objekteja (objektithan vievät luonnollisesti enemmän muistia kuin pelkät kokonaisluvut, jo pelkkä objektin osoitin vie sen verran [eli juuri nämähän voidaan tallentaa taulukkoon {objektit kuvineen ja tietoineen tallennetaan jonnekkin muualle muistin syövereihin (pitäisiköhän opetella vähentämään sulkujen käyttöä?)}]).
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Zero »

Jatketaan keskustelua täällä:

Tyhmät kysymykset (I/2011)
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
Locked