Avatar billede krismort Nybegynder
17. maj 2006 - 15:08 Der er 4 kommentarer og
1 løsning

hvad er mest optimeret ?

void mymethod( const bool& b ) {}
void mymethod( bool b ) {}

eller

void mymethod( string s ) {}
void mymethod( const string& s ) {}

Hvis man ser på forskellen mellem optimering mellem const string & og string så burde det være en åbenlys optimering men hvad med const bool& i forhold til bool ?
Avatar billede mxs Nybegynder
17. maj 2006 - 15:31 #1
En const string* s , vil også være optimerende, da den ikke skal til at oprette ekstra plads til en kopi. En refference er vel næsten det samme. Jeg ved ikke om du optimere særlig meget ved dit bool udtryk dog, da det er en primitiv type?! Ret mig endelig hvis jeg tager fejl.
Avatar billede krismort Nybegynder
17. maj 2006 - 15:50 #2
I forhold til boolean så er spørgsmålet nok om der skal flere kald til at hoppe til den adresse som min const bool& ligger på i forhold til bare at kopierer en bool til toppen af stack'en som hvis metodn var deklararet til at bruge bool.
Avatar billede driis Nybegynder
17. maj 2006 - 21:25 #3
Det er korrekt at bruge en pointer eller reference til en kompleks type som string er (meget) mere effektivt, da du slipper for at kopiere strengen.

void mymethod( bool b ) {}
Hvis b er den eneste parameter, vil b ofte bliver overført direkte i et register, og ikke på stakken. Hvis du kalder per reference, ligger adressen på b i samme register; og compileren vil skulle bruge en ekstra mov instruktion for at bringe værdien ind i et register, så der kan arbejdes med den.

Det du sparer i tilfældet med primitive typer; er så lidt at det ikke er værd at tænke over. Med komplekse typer, der indeholder meget data; kan der spares meget ved at tænke på om kaldet udføres by-value eller by-reference.
Avatar billede driis Nybegynder
17. maj 2006 - 21:28 #4
Avatar billede krismort Nybegynder
17. maj 2006 - 21:44 #5
1000 tak
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester