プログラムの高速化について語る
■ このスレッドは過去ログ倉庫に格納されています
0144デフォルトの名無しさん
NGNGいや、やっぱ結構賢いですな、いまどきのコンパイラ君。
class Complex {
double r;
double i;
public:
Complex(double r = 0, double i = 0) : r(r), i(i) {}
friend Complex operator+(const Complex& c1, const Complex& c2);
friend Complex operator*(const Complex& c1, const Complex& c2);
};
inline Complex operator+(const Complex& c1, const Complex& c2)
{ return Complex(c1.r + c2.r, c1.i + c2.i); }
inline Complex operator*(const Complex& c1, const Complex& c2)
{ return Complex((c1.r * c2.r - c1.i * c2.i), (c1.r * c2.i + c1.i * c2.r)); }
; 26 : Complex e = a * b + c * d;
mov eax, DWORD PTR _d$[esp+12]
mov ecx, DWORD PTR _a$[esp+12]
mov edx, DWORD PTR _c$[esp+12]
push esi
fld QWORD PTR [eax]
fld QWORD PTR [ecx]
fld QWORD PTR [edx+8]
fld QWORD PTR [ecx+8]
fxch ST(3)
fmul QWORD PTR [edx]
fxch ST(1)
fmul QWORD PTR [eax+8]
fld QWORD PTR [eax]
fxch ST(1)
fsubp ST(2), ST(0)
fxch ST(2)
mov esi, DWORD PTR _b$[esp+16]
push edi
fmul QWORD PTR [esi]
fld QWORD PTR [edx]
fxch ST(4)
fmul QWORD PTR [esi+8]
fsubp ST(1), ST(0)
fxch ST(2)
fmul QWORD PTR [edx+8]
fld QWORD PTR [esi]
fxch ST(3)
faddp ST(2), ST(0)
fxch ST(3)
fmul QWORD PTR [eax+8]
fld QWORD PTR [ecx]
fxch ST(2)
fstp QWORD PTR _e$[esp+24]
fxch ST(2)
■ このスレッドは過去ログ倉庫に格納されています