From: "Clifford J. Nelson" <cnelson9@gte.net>
Subject: Re: Ada95 speed
Date: 1999/05/18
Date: 1999-05-18T00:00:00+00:00 [thread overview]
Message-ID: <3740E38B.964258A5@gte.net> (raw)
In-Reply-To: FBwp62.9Er.0.-s@inmet.camb.inmet.com
Tucker,
It takes ten seconds to do the computations alone. And another eleven
seconds to plot the pixels for a total of 21 seconds.
Cliff Nelson
Tucker Taft wrote:
> Clifford J. Nelson (cnelson9@gte.net) wrote:
>
> : Ten years ago a Mandelbrot set computation and display on a 1200x700
> : screen with eight bit color took six seconds in C on a MacIIfx.
>
> : The following computations (leaving out all the with statements that you
> : need for the Mac) take ten seconds on an iMac 266 MHertz Mac OS 8.5.1
> : with the CodeBuilder Ada95 GNU from Tenon. I think it should run ten
> : times faster.
>
> : Is Ada95 slow in order to be safe?
>
> There is nothing in this code that would require any
> constraint checks. You could put a "pragma Suppress(all_checks);"
> at the top of your source file to verify this.
>
> : Is GNU Ada95 slower than most Adas?
>
> Not particularly.
>
> : Is the iMac slow? Mac OS 8.5.1 slow? CodeBuilder?
>
> The iMac is certainly much master than the MacIIfx in general,
> at least for pure computation.
>
> Probably the time is dominated by the drawing of the pixels.
> The only mildly complicated numeric operation in the code below is
> the call on "abs" for a complex number. That involves 2 multiplies
> and a square-root.
>
> It would be useful to see where the time is going. Chances are that
> the generated code is running much faster, and the time is all spent
> in the graphics routines drawing pixels.
>
> : Why does it take so long?
>
> My bet is on the graphic output routines. The code generated
> by the Ada compiler is probably taking an immeasurably small amount
> of time. Try changing the program so that it only does the computation.
> Then add back in the graphics output. Measure the difference in
> execution time...
>
> : Program follows--------
>
> : with Ada.Numerics.Complex_Types;
> : use Ada.Numerics.Complex_Types;
>
> : procedure Mandel is
>
> : -- Initialize procedure goes here for windRect.bottom and windRect.top
>
> : procedure Display(Mag : in Float) is
> : It : Integer;
> : X, Y : Float;
> : C, Z : Complex;
> : Num_Iters : constant := 64;
> : Vertical_Maximum : constant Short_Integer := windRect.bottom;
> : Horizontal_Maximum : constant Short_Integer := windRect.Right;
> : Ver_Size : constant Float := Float(Vertical_Maximum + 1);
> : Hor_Size : constant Float := Float(Horizontal_Maximum + 1);
> : StartY : constant Float := -Mag * Ver_Size;
> : StartX : constant Float := -Mag * Hor_Size;
> : Step : constant Float := 2.0 * Mag ;
>
> : begin
> : Y := StartY;
> : for Y_Pos in windRect.top..windrect.bottom - 1 loop
> : X := StartX;
> : for X_Pos in windRect.left..windRect.right loop
> : Z := (X, Y); -- Complex value; standard Ada 95!
> : C := Z;
> : for I in 0..Num_Iters loop
> : It := I;
> : exit when (abs( Z)) > 2.0;
> : Z := Z * Z + C; -- Complex arithmetic
> : end loop;
> : -- draw pixel here in color depending on variable It.
> : X := X + Step;
> : end loop;
> : Y := Y + Step;
> : end loop;
> : end Display;
>
> : begin -- Main body of program Mandel
> : Initialize;
> : Display(0.0025); -- draw the fractal!
> : loop
> : exit when Events.Button;
> : end loop;
> : end Mandel;
>
> --
> -Tucker Taft stt@averstar.com http://www.averstar.com/~stt/
> Technical Director, Distributed IT Solutions (www.averstar.com/tools)
> AverStar (formerly Intermetrics, Inc.) Burlington, MA USA
next prev parent reply other threads:[~1999-05-18 0:00 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-05-18 0:00 Ada95 speed Clifford J. Nelson
1999-05-17 0:00 ` David Starner
1999-05-18 0:00 ` Clifford J. Nelson
1999-05-18 0:00 ` Florian Weimer
1999-05-18 0:00 ` Tucker Taft
1999-05-18 0:00 ` Clifford J. Nelson [this message]
1999-05-18 0:00 ` Larry Kilgallen
1999-05-20 0:00 ` Tom Moran
1999-05-21 0:00 ` Clifford J. Nelson
1999-05-21 0:00 ` Tom Moran
1999-05-21 0:00 ` Clifford J. Nelson
1999-05-21 0:00 ` Tom Moran
[not found] <374182F2.B10AD449@Maths.UniNe.CH>
1999-05-18 0:00 ` Tom Moran
1999-05-18 0:00 ` Gautier
1999-05-19 0:00 ` Robert Dewar
1999-05-20 0:00 ` Clifford J. Nelson
1999-05-20 0:00 ` Tucker Taft
1999-05-20 0:00 ` Tom Moran
1999-05-20 0:00 ` Tom Moran
1999-05-21 0:00 ` Tom Moran
1999-05-31 0:00 ` James E. Hopper
1999-06-01 0:00 ` Clifford J. Nelson
1999-06-01 0:00 ` James E. Hopper
1999-06-02 0:00 ` Clifford J. Nelson
1999-06-04 0:00 ` Clifford J. Nelson
1999-06-02 0:00 ` James E. Hopper
1999-06-02 0:00 ` Clifford J. Nelson
1999-06-02 0:00 ` James E. Hopper
1999-06-02 0:00 ` Clifford J. Nelson
1999-06-02 0:00 ` Gautier
1999-06-02 0:00 ` John B. Matthews, M.D.
1999-06-02 0:00 ` John B. Matthews, M.D.
1999-06-02 0:00 ` Clifford J. Nelson
1999-06-02 0:00 ` Robert Dewar
1999-06-04 0:00 ` Clifford J. Nelson
1999-06-04 0:00 ` David C. Hoos, Sr.
1999-06-04 0:00 ` Ole-Hjalmar Kristensen
1999-06-01 0:00 ` Clifford J. Nelson
1999-06-01 0:00 ` James E. Hopper
1999-06-02 0:00 ` Robert Dewar
1999-06-04 0:00 ` Clifford J. Nelson
1999-06-05 0:00 ` Robert Dewar
1999-06-03 0:00 ` Robert I. Eachus
1999-05-31 0:00 ` Gautier
1999-05-19 0:00 ` Robert Dewar
-- strict thread matches above, loose matches on Subject: below --
1999-06-05 0:00 tmoran
1999-06-05 0:00 ` Al Christians
1999-06-05 0:00 ` David C. Hoos, Sr.
1999-06-05 0:00 tmoran
1999-06-05 0:00 ` Robert Dewar
1999-06-05 0:00 ` Ehud Lamm
1999-06-05 0:00 ` William Starner
1999-06-05 0:00 ` Ehud Lamm
1999-06-05 0:00 ` Clifford J. Nelson
1999-06-06 0:00 ` David Botton
1999-06-06 0:00 ` Ehud Lamm
1999-06-07 0:00 ` Robert Dewar
1999-06-07 0:00 ` Ehud Lamm
1999-06-06 0:00 tmoran
1999-06-06 0:00 ` David C. Hoos, Sr.
1999-06-06 0:00 ` tmoran
1999-06-07 0:00 ` Robert Dewar
1999-06-06 0:00 ` Brian Rogoff
1999-06-06 0:00 ` David C. Hoos, Sr.
1999-06-07 0:00 ` Robert Dewar
1999-06-06 0:00 tmoran
1999-06-06 0:00 ` Robert Dewar
1999-06-07 0:00 Robert I. Eachus
1999-06-07 0:00 ` tmoran
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox