V
Wissensdurstige schrieb:
Eine kurze Zusammenfassung(korrigiert mich bitte, falls ich falsch liege):
Wenn ich in C++ auch char Arrays anstatt Strings und normale Arrays anstatt Container verwende, dann erreiche ich die selbe Performance wie bei C(virtuelle Methoden vergessen wir erstmal).
exakt.
und printf statt cout, denn printf ist schneller, obwohl! technische performancegründe für cout sprechen.
und malloc statt new. falls sie unterschiedlich implementiert sind, ist malloc für c vermutlich angemessener.
normale arrays statt container bringt immer dann speed, wenn man sich für lahme container enschieden hätte (also zu 99% der fälle).
char arrays bzw char zeiger statt strings bringen nix, wüdre ich schätzen. eher nachteile.
aber jetzt egal, was schneller oder langsamer ist, wenn du in den c++-compiler c-code steckst, wird der auch als c-code behandelt. er wird ganz genau exakt gleich schnell sein wie c-code.
darüberhinaus kannste n c++ sogar manche sacken kostenlos kriegen
template<class T,int SIZE>
class Array{
private:
T data[SIZE];
Array(const Array&);
public:
Array(){
}
T& operator[](int index){
assert(0<=index && index<SIZE);
return data[T];
}
};
ist so ein kamerad, der null performance kostet, also wirklich genau gleich schnell wie ein c-array ist, aber im debugmodus indexgrenzenüberprüfung bietet.
und genau wegen dieser kleinigkeiten muß man einfach nach c++ umschwenken. und wenn man gar keine virtuellen funktionen benutzt, niemals cout, niemals char-arrays oder vector. hin und wieder so ein geschenk muß man einfach annehmen.