Witam,
Zastanawiam się czy zainwestować trochę w klasy, ekspertem nie jestem, zawsze niskopoziomowo.
Przy większej ilości operacjach na liczbach zespolonych, klasy z przeciążonymi operatorami byłyby super, jednak przeszkodą jest prędkość, albo moja niewiedza:
// przyklad
#include <QDebug>
#include <QElapsedTimer>
QElapsedTimer myTimer;
void tic(){
myTimer.restart();
}
void toc(const QString &text){
qDebug()<<text<<myTimer.nsecsElapsed();
}
class QComplex{
public:
double re;
double im;
QComplex(double re = 0, double im = 0){
this->re = re;
this->im = im;
}
inline double operator +(double val){
return re + val;
}
inline QComplex operator +(const QComplex &cpx){
return QComplex(re + cpx.re, im + cpx.im);
}
};
// ladnie ;)
void cpx_speedtest(){
QComplex a(1, 1), b(2, 2), c;
tic();
for(int i=0; i<10000; ++i){
c = a+b;
}
toc("Ladnie: ");
}
// szybko ;)
void normal_speedtest(){
double a_re = 1;
double a_im = 1;
double b_re = 2;
double b_im = 2;
double c_re = 0;
double c_im = 0;
tic();
for(int i=0; i<10000; ++i){
c_re = a_re + b_re;
c_im = a_im + b_im;
}
toc("Szybko: ");
}
int main()
{
cpx_speedtest();
normal_speedtest();
return 0;
}
"Ladnie: " 130535
"Szybko: " 30172
Da się to jakoś podrasować? Boli mnie że przy dodawaniu ciągle jest tworzona i niszczona klasa...
Może odpuścić i dziubać zawijasy w C?