[Back to HARDWARE SWAG index] [Back to Main SWAG index] [Original]
{
Here is a program I wrote to see how good my new 387sx co-processor was. It
uses the standard REAL type.
}
program Math_Speed_Test;
{$N-,E-,R-,S-}
uses dos;
var i : longint;
num1, num2, num3 : real; { or double }
output : text;
hou,minu,seco,s100 : word;
StartClock,
StopClock : Real;
Procedure ClockOn;
Begin
GetTime(hou,minu,seco,s100);
StartClock:=( hou * 3600 ) + ( minu * 60 ) + seco + ( s100 / 100 );
End;
Procedure ClockOff;
Begin
GetTime(hou,minu,seco,s100);
StopClock:=( hou * 3600 ) + ( minu * 60 ) + seco + ( s100 / 100 );
WriteLn(output,'Elapsed Time = ',(StopClock-StartClock):0:2,'s');
End;
begin
assign(output,'');
rewrite(output);
clockon;
{$IFOPT N+}
writeln(output,'Using 8087 Code');
{$ELSE}
writeln(output,'Using Software floating point routines');
{$ENDIF}
for i:=1 to 100000 do
begin
num1:=random(60000)/100;
repeat
num2:=random(60000)/100;
until num2>0;
num3:=num1/num2;
end;
clockoff;
close(output);
end.
And the results.....
Using Software floating point routines
Elapsed Time = 31.03s
Using 8087 Code
Elapsed Time = 8.78s
However, changing REAL to DOUBLE gives
Using 8087 Code
Elapsed Time = 5.50s
I don't want to remove my co-processor, so I can't get the results for
using the emulation library :-). You could compile the program and try it
for yourself.
[Back to HARDWARE SWAG index] [Back to Main SWAG index] [Original]