Bladeren bron

improved performance of ALL on complex and longcomplex

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7131 8c9fc860-2736-0410-a75d-ab315db34111
felixf 8 jaren geleden
bovenliggende
commit
7e23046390
1 gewijzigde bestanden met toevoegingen van 9 en 6 verwijderingen
  1. 9 6
      source/FoxArrayBase.Mod

+ 9 - 6
source/FoxArrayBase.Mod

@@ -2108,22 +2108,25 @@ Sufficient (but not necessary) conditions:
 	
 	
 (** COMPLEX *)
 (** COMPLEX *)
 	PROCEDURE GenericLoopZ( ladr, dadr, linc, dinc, len: LONGINT; op: PROCEDURE(x: COMPLEX): COMPLEX );
 	PROCEDURE GenericLoopZ( ladr, dadr, linc, dinc, len: LONGINT; op: PROCEDURE(x: COMPLEX): COMPLEX );
-	VAR lval: COMPLEX;
+	VAR lval,dval: POINTER{UNSAFE} TO RECORD val: COMPLEX END;	
 	BEGIN
 	BEGIN
 		WHILE (len > 0) DO
 		WHILE (len > 0) DO
-			SYSTEM.GET( ladr, lval );  SYSTEM.PUT( dadr, op(lval) );  INC( ladr, linc );  INC( dadr, dinc );
+			lval := ladr;
+			dval := dadr;
+			dval.val := op(lval.val);
+			(* SYSTEM.GET( ladr, lval );  SYSTEM.PUT( dadr, op(lval) );*)  INC( ladr, linc );  INC( dadr, dinc );
 			DEC( len );
 			DEC( len );
 		END;
 		END;
 	END GenericLoopZ;
 	END GenericLoopZ;
 
 
 (** LONGCOMPLEX *)
 (** LONGCOMPLEX *)
 	PROCEDURE GenericLoopLZ( ladr, dadr, linc, dinc, len: LONGINT; op: PROCEDURE(x: LONGCOMPLEX): LONGCOMPLEX );
 	PROCEDURE GenericLoopLZ( ladr, dadr, linc, dinc, len: LONGINT; op: PROCEDURE(x: LONGCOMPLEX): LONGCOMPLEX );
-	VAR lval: LONGCOMPLEX;
+	VAR lval,dval: POINTER{UNSAFE} TO RECORD val: LONGCOMPLEX END;	
 	BEGIN
 	BEGIN
 		WHILE (len > 0) DO
 		WHILE (len > 0) DO
-			SYSTEM.MOVE(ladr, ADDRESS OF lval, SIZE OF LONGCOMPLEX);
-			lval := op(lval);
-			SYSTEM.MOVE(ADDRESS OF lval, dadr, SIZE OF LONGCOMPLEX);
+			lval := ladr;
+			dval := dadr;
+			dval.val := op (lval.val);
 			INC( ladr, linc );  INC( dadr, dinc );
 			INC( ladr, linc );  INC( dadr, dinc );
 			DEC( len );
 			DEC( len );
 		END;
 		END;