From: Peter S. <zu...@us...> - 2005-09-22 16:08:37
|
Update of /cvsroot/apophysis/2.10/Source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16565/Source Modified Files: VarEyefish.pas Log Message: tried to convert a variation to assembler. although compiled code looks MUCH less optimal than this, I haven't noticed any performance increase :-/ Index: VarEyefish.pas =================================================================== RCS file: /cvsroot/apophysis/2.10/Source/VarEyefish.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** VarEyefish.pas 15 Sep 2005 16:43:23 -0000 1.2 --- VarEyefish.pas 22 Sep 2005 16:08:29 -0000 1.3 *************** *** 24,33 **** /////////////////////////////////////////////////////////////////////////////// procedure TVariationEyefish.CalcFunction; var r: double; begin ! r := 2 / (sqrt(FTx^ * FTx^ + FTy^ * FTy^) + 1); ! FPx^ := FPx^ + vvar * r * FTx^; ! FPy^ := FPy^ + vvar * r * FTy^; end; --- 24,66 ---- /////////////////////////////////////////////////////////////////////////////// procedure TVariationEyefish.CalcFunction; + {$if false} var r: double; begin ! r := 2 * vvar / (sqrt(FTx^ * FTx^ + FTy^ * FTy^) + 1); ! FPx^ := FPx^ + r * FTx^; ! FPy^ := FPy^ + r * FTy^; ! {$else} ! asm ! fld qword ptr [eax+vvar] ! fadd st, st ! ! mov ecx, [eax+FTy] ! fld qword ptr [ecx] ! mov ecx, [eax+FTx] ! fld qword ptr [ecx] ! ! fld st(1) ! fmul st, st ! fld st(1) ! fmul st, st ! fadd ! fsqrt ! ! fld1 ! fadd ! fdivp st(3), st ! ! fmul st, st(2) ! mov ecx, [eax+FPx] ! fadd qword ptr [ecx] ! fstp qword ptr [ecx] ! ! fmulp ! mov ecx, [eax+FPy] ! fadd qword ptr [ecx] ! fstp qword ptr [ecx] ! ! {$ifend} end; |