Contributor: SWAG SUPPORT TEAM 
{
 Hi, to All:
 ...While recently "tuning up" one of my Programs I'm currently
 working on, I ran a little test to Compare the perfomance
 of the different versions of Turbo Pascal from 5.0 through
 to 7.0. The results were quite suprizing, and I thought I'd
 share this With you guys/gals.
 Here are the results of a "sieve" Program to find all the primes
 in 1 - 100,000, running on my AMI 386SX-25 CPU desktop PC:
 CompILER EXECUTION TIME RELATIVE TIME FACtoR
 ==================================================
 TP 7.0 46.7 sec 1.00
 TP 6.0 137.8 sec 2.95
 TP 5.5 137.5 sec 2.94
 TP 5.0 137.6 sec 2.95
 Running the same Program to find all the primes in 1 - 10,000,
 running on my 8086 - 9.54 Mhz NEC V20 CPU laptop PC:
 CompILER EXECUTION TIME RELATIVE TIME FACtoR
 ==================================================
 TP 7.0 14.1 sec 1.00
 TP 6.0 28.3 sec 2.00
 notE: This would seem to indicate that the TP 7.0 386 math-
 library is kicking in when run on a 386 CPU.
 Here is the source-code to my "seive" Program:
------------------------------------------------------------------------
}
 {.$DEFinE DebugMode}
 {$DEFinE SaveData}
 {$ifDEF DebugMode}
 {$ifDEF VER70}
 {$ifDEF DPMI}
 {$A+,B-,D+,E-,F-,G-,I+,L+,N-,P+,Q+,R+,S+,T+,V+,X-}
 {$else}
 {$A+,B-,D+,E-,F-,G-,I+,L+,N-,O-,P+,Q+,R+,S+,T+,V+,X-}
 {$endif}
 {$else}
 {$ifDEF VER60}
 {$A+,B-,D+,E-,F-,G-,I+,L+,N-,O-,R+,S+,V+,X-}
 {$else}
 {$A+,B-,D+,E-,F-,I+,L+,N-,O-,R+,S+,V+}
 {$endif}
 {$endif}
 {$else}
 {$ifDEF VER70}
 {$ifDEF DPMI}
 {$A+,B-,D-,E-,F-,G-,I-,L-,N-,P-,Q-,R-,S+,T-,V-,X-}
 {$else}
 {$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,P-,Q-,R-,S+,T-,V-,X-}
 {$endif}
 {$else}
 {$ifDEF VER60}
 {$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S+,V-,X-}
 {$else}
 {$A+,B-,D-,E-,F-,I-,L-,N-,O-,R-,S+,V-}
 {$endif}
 {$endif}
 {$endif}
 (* Find prime numbers - Guy McLoughlin, 1993. *)
Program Find_Primes;
 (***** Check if a number is prime. *)
 (* *)
 Function Prime({input } lo_in : LongInt) : {output} Boolean;
 Var
 lo_Stop,
 lo_Loop : LongInt;
 begin
 if (lo_in mod 2 = 0) then
 begin
 Prime := (lo_in = 2);
 Exit
 end;
 if (lo_in mod 3 = 0) then
 begin
 Prime := (lo_in = 3);
 Exit
 end;
 if (lo_in mod 5 = 0) then
 begin
 Prime := (lo_in = 5);
 Exit
 end;
 lo_Stop := 7;
 While ((lo_Stop * lo_Stop) <= lo_in) do inc(lo_Stop, 2); lo_Loop := 7; While (lo_Loop < lo_Stop) do begin inc(lo_Loop, 2); if (lo_in mod lo_Loop = 0) then begin Prime := False; Exit end end; Prime := True end; (* Prime. *) (***** Check For File IO errors. *) (* *) Procedure CheckIOerror; Var by_Error : Byte; begin by_Error := ioresult; if (by_Error  0) then
 begin
 Writeln('File Error = ', by_Error);
 halt
 end
 end; (* CheckIOerror. *)
Var
 bo_Temp : Boolean;
 wo_PrimeCount : Word;
 lo_Temp,
 lo_Loop : LongInt;
 fite_Data : Text;
begin
 lo_Temp := 100000;
 {$ifDEF SaveData}
 {$ifDEF VER50}
 assign(fite_Data, 'PRIME.50');
 {$endif}
 {$ifDEF VER55}
 assign(fite_Data, 'PRIME.55');
 {$endif}
 {$ifDEF VER60}
 assign(fite_Data, 'PRIME.60');
 {$endif}
 {$ifDEF VER70}
 assign(fite_Data, 'PRIME.70');
 {$endif}
 {$I-}
 reWrite(fite_Data);
 {$I+}
 CheckIOerror;
 {$endif}
 wo_PrimeCount := 0;
 For lo_Loop := 2 to lo_Temp do
 if Prime(lo_Loop) then
 {$ifDEF SaveData}
 begin
 Write(fite_Data, lo_Loop:6);
 Write(fite_Data, ', ');
 inc(wo_PrimeCount);
 if ((wo_PrimeCount mod 10) = 0) then
 Writeln(fite_Data)
 end;
 close(fite_Data);
 CheckIOerror;
 {$else}
 inc(wo_PrimeCount);
 {$endif}
 Writeln(wo_PrimeCount, ' primes between: 1 - ', lo_Temp)
end.
{
 ...This little test would put TP 7.0's .EXE's between 2 to 3
 times faster than TP4 - TP6 .EXE's. (I've found simmilar results
 in testing other Programs I've written.) I guess this is one more
 reason to upgrade to TP 7.0 .
 ...I'd be curious to see how StonyBrook's Pascal+ 6.1 Compares
 to TP 7.0, in terms of execution speed With this Program.
 - Guy
}
 

AltStyle によって変換されたページ (->オリジナル) /