HDSoftware Skrevet 23. april 2007 Skrevet 23. april 2007 Jeg tenker jo på at .NET er rimelig komplext og generellt kan man vel si at jo mere komplekst ting er, jo mere må det taes hensyn til runtime. Nå er det vel slik at hvis man sammenligner VB, C#, etc i .NET versjonene så bør jo hastighet og optimalisering være omtrendt det samme så lenge man holder seg til .NET namespace, men er .NET så bra at man kan lage tids kritiske programmer? Eller er dette fortsatt forbeholdt ASM og C?
j000rn Skrevet 23. april 2007 Skrevet 23. april 2007 .Net kan være raskere enn prekompilerte programmer siden den kompilerer on-the-fly avhengig av prosessoren du har. (Du kan også precompilere med ngen.exe, men da blir det kompilert for "DIN" prosessor --- fordelen er at man får litt raskere oppstartstid). Noen ting er mye treigere i .Net på grunn av "sandbox" funksjonaliteten man har. Den sjekker for overflow av tall og at du ikke skriver utenfor arrays. Fordelen med dette er at man ikke får mulighet for å utnytte buffer overflow svakheter i koden til hacking. C# har mulighet for å bruke pointere og unsafe kode. Dette har ikke VB.Net. Dette kan gi STOR økning i hastighet. En annen ting som kan gjøre .Net "hakkete" er at garbage collectoren kjører (u)regelmessig og kan bruke ressurser.
HDSoftware Skrevet 23. april 2007 Forfatter Skrevet 23. april 2007 ok. C# har med andre ord absolutt sine fordeler. Er overgangen fra VB til C# tung? Når det gjelder GC, er det ikke mulig å styre denne selv? Mener å ha sett et sted at man kan kalle opp denne og da kan man jo utføre dette ved leilighet, kan man ikke?
j000rn Skrevet 23. april 2007 Skrevet 23. april 2007 ok. C# har med andre ord absolutt sine fordeler. Er overgangen fra VB til C# tung? Når det gjelder GC, er det ikke mulig å styre denne selv? Mener å ha sett et sted at man kan kalle opp denne og da kan man jo utføre dette ved leilighet, kan man ikke? 8455491[/snapback] GC.Collect(); kjører garbage collectoren. Noe mer kontroll enn det tror jeg ikke man klarer å få til....
HDSoftware Skrevet 23. april 2007 Forfatter Skrevet 23. april 2007 Så det betyr at man ikke f.eks. kan lage en egen inherited klasse og legge på en WAIT event som rett og slett pauser GC'n? Går jo ut ifra at GC'n er en loop i en eller annen form som rydder opp og hvis man kunne slengt noe inn i den som holdt igjen så ville man jo hatt mere kontroll. Men det lar seg vel ikek gjøre da..
Manfred Skrevet 23. april 2007 Skrevet 23. april 2007 GC ligger vel på et "lavere nivå" enn selve applikasjonen din.
HDSoftware Skrevet 23. april 2007 Forfatter Skrevet 23. april 2007 GC ligger vel på et "lavere nivå" enn selve applikasjonen din. 8455944[/snapback] Det gjør vel det.
GeirGrusom Skrevet 24. april 2007 Skrevet 24. april 2007 Du kan bruke System.Runtime.interop.Marshal.GlobalAlloc for å manuelt allokere minne, dette blir da allokert utenfor gc. For å hindre et objekt i å bli allokert, kan du bruke GC.SupressFinalizer. Men å stoppe GC tror jeg ikke man kan (og det er vel strengt tatt ikke nødvendig heller)
HDSoftware Skrevet 24. april 2007 Forfatter Skrevet 24. april 2007 Nødvendigheten er vel egentlig der siden GC gjør dette når det passer GC. Eller jobber den bare på Idle time kansje? Er vel egentlig det jeg tenker på.
Manfred Skrevet 24. april 2007 Skrevet 24. april 2007 Så langt jeg vet jobber den stort sett på idle time. Det er vel relativt sjelden den "stjeler" ressurser samtidig med at andre, tyngre prosesser kjører.
j000rn Skrevet 24. april 2007 Skrevet 24. april 2007 I tillegg så "MÅ" den jo kjøre hvis du går tom for minne....
HDSoftware Skrevet 24. april 2007 Forfatter Skrevet 24. april 2007 Når vi først er inne på temaet. Jeg går jo ut ifra at GC "vet" om objektene fordi RTL sørger for å putte en referanse til alle sommen på en stack. Men jeg hører jo at noe heter Marshal. Hva innebærer dette? Mener å ha forstått det slik at marshall objekter ikke havner i denne "stacken"? Stemmer det? I så fall, hvordan forsikrer jeg meg om at disse blir fjernet? Og hva kjennertegner et slikt marshall objekt og hvorfor eksisterer de ?
Bigbagaroo Skrevet 25. april 2007 Skrevet 25. april 2007 Kan det være at du har snublet over noe relatert til COM og tilhørende herligheter? http://www.thescripts.com/forum/thread253286.html Stort sett kan du la være å tenkte på GC; det er ytterst få situasjoner du som applikasjonsprogrammerer vil ha behov for å manuelt (over)styre denne. Jeg aner ikke hva et godt norsk ord for marshaling skulle være; men en kan vel si at det er en slags dirigent som er ansvarlig for at objekter/referanser/kall blir utvekslet mellom forskjellige systemer ihht en gitt metodikk.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå