comp.lang.ada
 help / color / mirror / Atom feed
From: "John R. Strohm" <strohm@airmail.net>
Subject: Re: Speeding up Ada procedure?
Date: Thu, 27 Feb 2003 16:55:51 -0600
Date: 2003-02-27T16:55:51-06:00	[thread overview]
Message-ID: <39C63F6EB5F4631F.090DB39F2787B505.06BDC350E9BE2563@lp.airnews.net> (raw)
In-Reply-To: 1d13e1b4.0302261526.40058154@posting.google.com

"Papandopulo" <papand0pul0@yahoo.com> wrote in message
news:1d13e1b4.0302261526.40058154@posting.google.com...
> I have certain procedures dealing with
> large arrays which are potential performance
> bottlenecks. While they didn't cause
> performance problems yet I intuitively
> feel they will.

George, there is a very fundamental rule-of-thumb in this racket.  You NEVER
speculate about things that MIGHT become performance problems.  You profile
the code and FIND OUT if they are IN FACT performance problems.

Some years ago, on a 50 MHz 486, I had a bunch of floating-point
calculations.  I was PLANNING on rewriting them in fixed-point (integer),
for speed, because I was worried that they might be a problem.  Before I did
that, however, I ran them and measured the time they took.  When I
discovered that they were nowhere near as bad as I'd expected them to be, I
left them in floating-point.  End of problem.

> Is it a way to remove runtime array
> bounds and other checks for particular
> procedure ?

pragma suppress

> While Ada checks are excellent on
> control-type part of program where is
> a lot of logic and not much time spent
> it can become deadly if massive arrays
> of data are being processed.
>
> If the procedure just takes an array and
> produces an array I can be sure it's not
> faulty by testing it with different size
> arrays and than turning off runtime checks.

No, you can't, not necessarily.  You have to understand the algorithm, and
be able to say that the subscript expressions will never blow.

Some Ada compilers are smart enough to figure out that subscript expressions
will always be in bounds, and optimize out the checks.

The other thing is this:  Depending on what you are doing, do you MIND if
the code runs slowly?  If you're not doing real-time stuff, it may not be an
issue.  Are the consequences of an UNDETECTED subscript fault worse than
having the code run slowly?  What about the consequences of a program crash?
(Twenty years ago, I watched a one-byte error in some 8080 code scrag the
hard disk on an Intel MDS.  I was writing a threaded-code interpreter,
playing games with the stack pointer.  It wasn't pretty.  After the hardware
guy rebuilt the disk, I formed a habit of hitting the write-protect switches
before I started my code.)






      parent reply	other threads:[~2003-02-27 22:55 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-26 23:26 Speeding up Ada procedure? Papandopulo
2003-02-27  0:30 ` Hyman Rosen
2003-02-27  0:39 ` tmoran
2003-02-27  3:22 ` Steve
2003-02-27  8:38 ` Gautier
2003-02-27  8:48   ` Duncan Sands
2003-02-27  8:54 ` Jean-Pierre Rosen
2003-02-27 15:45 ` Mark Johnson
2003-02-27 22:57   ` John R. Strohm
2003-02-28 14:33     ` Mark Johnson
2003-02-27 18:43 ` Alfred Hilscher
2003-02-27 22:55 ` John R. Strohm [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox