20. august 2001 - 00:08Der er
5 kommentarer og 3 løsninger
Overhead ved brug af variabler i events og functioner?
Når man ”opretter” en variabel må der være noget overhead involveret… Så hvordan undgår man at man at en variabel bliver ”oprettet” hver gang en function bliver kaldt ? fungerer static så dette ikke sker ? (Går jeg ud fra, men vil gerne være sikker!)
F.eks: vil i kun blive oprettet første gang MyFunc bliver kaldt ???
void MyFunc() { static int i; i = 0; do something… }
Ja hvis du bruger static så oprettes variablen første gang functionen kaldes og den nedlægges først når dit program terminere.
Meen jeg tror nu ikke du opnår noget som helst ved det. Faktisk kunne man forestille sig det modsatte. Hvis variablen ikke er static kan den oprettes som register variabel. Dev ingen overheead og meget hurtig access. Hvis den er static vil den ikke blive oprettet som register variable.
hvorfor er du interesseret i at den kun oprettes første gang?? den sættes til 0 umiddelbart efter, så hvorfor ikke udelade static og derved eksisterer variablen kun sålænge MyFunc() \"kører\" og nedlægges når MyFunc() slutter, derved spares memoryplads når MyFunc() ikke er i brug
mrilsted: Hvis en simpel variabel ikke bliver oprettet hvor er så den data man senere skriver til den :-) Den har naturligvis ikke ctor som bliver kaldt og andet OO overhead. Men den bliver trods alt oprettet.
fri-hash: spare 4 byte memory :-) Hvis nu han kalder funktionen 1 milliard gange så er det vel vær at overveje hvad der er af overhead m.h.t. variable oprettelse.
Jeg vidste ikke at simple variabler bliver oprettet som registre når de kaldes som funktioner.
Jeg ville bare lige høre om det var en fordel at oprette den som static når nu jeg har en function som bliver kaldt stort set hele tiden i mit program. Men det lyder ikke til at der er noget at hente ved den slags operationer.
morten2: De vil enten vaere i cpu\'ens registre eller paa stacken.
At lave din variable til static vil faktisk kunne gøre din code langsommere da det vil mindske compilerens muligheder for at optimere din code. Desuden(Afhænig af cpu/memmory mode) kan access til statiske data ogsaa vaere langsommere end normale variable.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.