{ 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 }