Frage zu Programmierstil
-
Hoi,
Ich habe 2 Code Schnippsel:
1:
void GetSize(string s,int* Size) { //Berechne die größe und schreibe sie in Size } void Write(int Number2Write) { //Schreibe Number2Write } int main(int argc,char** argv) { string s; s="abcdc"; int Size; GetSize(s,&s); Write(Size); }2:
int GetSize(string s) { //Berechne die größe und gebe sie zurück } void Write(int Number2Write) { //Schreibe Number2Write } int main(int argc,char** argv) { string s; s="abcdc"; Write(GetSize(s)); }Meine Frage ist, ob beie Code Teile gleich schnell sind.
Im ersten wird eine zusätzliche Variable benutzt, nun weiß ich nicht, ob der Compiler im 2ten Beispiel auch intern eine Variable benutzen würde oder nicht.Ich plane nämlich Get Methoden wie bei der OpenGL Api zu machen und die arbeiten ja so.
mfg
-
die zweite sollte schneller sein
kann aber sein, das compiler da wegoptimieren, kein plan
-
wenn du c++ hast solltest du keine c api nachmachen - das ist überaus schlechter stiel in c++
außerdem sollten strings per referenz übergeben werden, da sie sonst kopiert werden ( was teuer ist)
-
Das mit der referenz ist klar, hatte ich nur vergessen.
Das heißt in C wäre es kein schlechter Stil??
-
C ist eine prozedurale Programmiersprache, OpenGL eine prozedurale API. C++ ist eine objektorientierte Programmiersprache, in sofern solltest du auch eine objektorientierte API basteln.
-
Oder Eine nutzen.
-
nimm drittens:
Write(s.size());oder besser viertens:
meinstream << s.size();
-
Nenene, erstens solltest du mal rausfinden was Referenzen sind und dann ist es natürlich sinnlos, den Rückgabewert nicht zu benutzen.
Welches Beispiel ist wohl besser zu lesen (vor allem, wenn man sich da noch einiges an Code-Zeilen drum rum denkt). Das braucht wohl kein Thread hier im Forum, um das rauszufinden.
übrigens sollte man auch Initialisierung gegenüber Zuweisung bevorzugen. Vielleicht solltest du dir mal gotw oder Effektiv C++ angucken.
lolz schrieb:
nimm drittens:
Write(s.size());oder besser viertens:
meinstream << s.size();