mglacy@lamar.ColoState.EDU (02/06/91)
I have a fair sized numerical analysis program I'm working on. In the
middle of it is the workhorse procedure that eats up about 90% of
run time. 'workhorse' looks something like this:
PROCEDURE workhorse;
procedure A
begin
if some condition
call A {recursively}
else
do a bunch of calculations I'll call C
end;{A}
begin
{main part of workhorse}
initlz;
Do procedure A
process results of A
end; {workhorse}
Here's the thing: In the interests of style, I decided to make the
bunch of calculations C into a procedure. This necessitates passing
a number of parameters, including a big array {ca 50k elements}.
To avoid excess memory use, particularly given the recursive calls of
A, I made the big array a VAR parameter. (In the original version
above, I just left the big array as global to procedure workhorse).
The program works either way but:
1. both versions run equally fast under turbo pascal 4.0
2. but using a vax running VMS and IBM AIX system, the second
version, with the procedure for the set of calculations C,
runs about 30% slower.
Question: Can anybody explain this to me---I have a hard time imagining
that some parameter passing and proc calls would eat up about 30% as
much time as the whole workhorse procedure. I've tried the optimizing
compiler option on the IBM AIX system, with function/procedures results put
into special registers, etc. Still, the TP compiler seems to be
the only one that will me to improve the style of the program without
a major sacrifice in execution time.
Enlightment would be appreciated.