nOne Skrevet 6. april 2006 Del Skrevet 6. april 2006 (endret) Mitt spørsmål er som følger: Dersom man har 3 klasser (instansnavn), for eksempel: Dataklasse (min_dataklasse) Programklasse (min_programklasse) Filskriverklasse (min_filklasse) Dataklassen inneholder en float Programklassen inneholder instanser av Programklassen og Dataklassen Filskriver skal lagre dataklassens float. er det da kjappes å a) i programklassen: min_filklasse.Write(min_dataklasse.Data) eller b) i filklassen: public void SetData(Dataklassen d){ min_dataklasse = d } public void Save(){ Write(min_dataklasse.Data) } i programklassen: min_filklasse.Setdata(min_dataklasse) //kjøres en gang i starten min_filklasse.Save()//kjøres hver gang jeg vil lagre. Forskjellen er at man i alternativ b har en ref til dataklassen og dermed ikke trenger sende data som variabler hver gang. I a sendes float verdien som et parameter. Hastighet er alt som teller her =) vi snakker om en metode som skal kjøre i overkant av 200000 ganger/sec (ikke skriving til fil, men det er ett enkelt eksempel) beklager at eksempel "koden" er litt dårlig, håper det i allefall er forståelig Endret 6. april 2006 av nOne Lenke til kommentar
oyvind_b Skrevet 7. april 2006 Del Skrevet 7. april 2006 Hmmm... skulle vel tro at eksempel A er raskere (ett metodekall: Write), fordi i eksempel B blir det kjørt to metodekall hver gang (Save i tillegg til Write). Noe målinger på dette har jeg ikke gjort, men det kan du jo gjøre selv? Øyvind Lenke til kommentar
Oracel Skrevet 18. april 2006 Del Skrevet 18. april 2006 Tipper at .Net er smartere enn deg i dette tilfellet. Skriv det så enkelt og greit som mulig (slik det er ment), og .Net vil fikse resten for deg. Om det ikke skulle være nok: * Les dette (nøye): http://www2.sys-con.com/ITSG/virtualcd/Dot...omez/index.html * Når du har implementert alle triksene i ovennevnte artikkel, så kan du begynne å bry deg om filleproblemet ditt. Det kan du f.eks. gjøre ved å bruke ildasm-programmet som følger med .Net SDK og sammenligne IL-koden som blir generert. Når du er ferdig med å kaste vekk tiden din (slik jeg gjør nå), så kan du angre på at du ikke brukte den på å fikse bugs eller implementere nye features i programmet ditt. Lenke til kommentar
nOne Skrevet 18. april 2006 Forfatter Del Skrevet 18. april 2006 Tipper at .Net er smartere enn deg i dette tilfellet. Skriv det så enkelt og greit som mulig (slik det er ment), og .Net vil fikse resten for deg. Om det ikke skulle være nok: * Les dette (nøye): http://www2.sys-con.com/ITSG/virtualcd/Dot...omez/index.html * Når du har implementert alle triksene i ovennevnte artikkel, så kan du begynne å bry deg om filleproblemet ditt. Det kan du f.eks. gjøre ved å bruke ildasm-programmet som følger med .Net SDK og sammenligne IL-koden som blir generert. Når du er ferdig med å kaste vekk tiden din (slik jeg gjør nå), så kan du angre på at du ikke brukte den på å fikse bugs eller implementere nye features i programmet ditt. 5941584[/snapback] takk for link =) når det gjelder om dette er en fillesak eller ikke er jo det en vurderingssak, og du kjenner ikke de nødvendige detaljene for hvor vesentlig dette er for det programmet jeg skriver =P Tall verdier er for eksempel by value så dersom jeg gjør nok av slike spørringer må Garbage collector rydde mye kjafs om jeg sender det som parameter afaik. og i mitt program hadde jeg 50000 objekter som jeg testet mot 60 ganger i sekundet så nei det er ikke noe filleproblem.... Lenke til kommentar
j000rn Skrevet 19. april 2006 Del Skrevet 19. april 2006 Prøv med "ref" isteden: i filklassen: public void Save(ref float verdi) { // etc... } i programklassen: min_filklasse.Save(ref minverdi); Tror kanskje det er andre ting som heller burde optimaliseres, men det er vanskelig å se uten å se hele koden din. Eksempelet du hadde med skriving til fil er ganske dårlig siden å skrive til filen vil ta 99.99% av tiden uansett.... Lenke til kommentar
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å