comp.lang.ada
 help / color / mirror / Atom feed
From: Stanley Allen <sallen@ghgcorp.com>
Subject: Re: Executable File Size Differences
Date: 1996/09/28
Date: 1996-09-28T00:00:00+00:00	[thread overview]
Message-ID: <324D6631.4F3F@ghgcorp.com> (raw)
In-Reply-To: 52bq9m$7gn@nr1.ottawa.istar.net


Georgi Savov:

> 
> Robert P. Kuzmicki:
> >
> > I tried compiling a simple "Hello World" program with the Thomson
> > Software's ActivAda for Windows and Thomson's new "ObjectAda". The
> > ActivAda version produces a executable file size of about 288K.
> > ObjectAda produces an exe of about 788K. Microsoft C++ produces an
> > exe of about 10K. Why are the executables so substantially different?
> > Are the Ada compilers linking in alot of excess baggage? I have tried
> > various compiler switches, but nothing seems to shrink the exe file sizes.
> >
> > Can anyone enlighten me here?
>
> Probably you are looking at the Debug version of the EXE file.
> Try making a Release Version. I did. It is 83K.
> 
> Georgi Savov

But this is still unacceptable isn't it?  Why should "Hello, world"
take 83K of executable code?  Maybe Microsoft C++ is using a DLL
for the I/O and ObjectAda is including it in the EXE.  But I'll bet
ObjectAda *is* using DLL's too, and that there's another reason.

I'm glad someone brought this topic up, because I've been
waiting for a chance to get on a soapbox.


I am not convinced that current Ada compilers could be used to

produce code for "major" PC software that would have acceptable

memory performance.  I'm thinking of full-featured products,

products that compete in the cut-throat PC software market at

the top echelons, where "feature-itis" issues are critical to
commercial success.  Products like WordPerfect, Netscape
Navigator, and Microsoft Access.  Could Ada be used to develop
commercially successful products in this arena?  I don't think
so.



I think the executable speed of the code produced by current

Ada compilers is up to snuff.  And I believe that, in general,

the number of bytes of executable code produced by current

Ada compilers for this or that section of source code is

competitive with that produced by C/C++ compilers for

functionally equivalent code segments.  But I *don't* believe

that the size of the executables produced by the linkers, and the

amount of RAM necessary to run these executables, is currently

acceptable for producing products in the above-described arena.



The problem is an old one: the lack of "smart linkers" which

would include only the necessary code from an Ada package, and

avoid linking in the unused bulk that never gets invoked.



This is an old complaint but still a valid one.  I've been in

the Ada bidness for about 10 years now, and the only smart

linker I can recall for PCs (my exposure may be weak here) was

Meridian.  Vendors seem to be content with the Ada-binder/

system-loader approach (a special Ada-specific binding step 

is performed to gather all the object files, which are then

passed to a general system-supplied loader, like Microsoft's
linker).  This approach has the advantage of portability and
easy implementation.  But since most Ada implementations
produce one object file for each package, a reference to
a procedure or variable in that package causes the low-level
linker to include the entire object module into the executable,
whether most of it is used or not.  



Not many Ada projects have historically demanded smart linkers
(except perhaps in the embedded controller domain), maybe
becuase not many DoD project managers have squawked about

code size.  The issue has never been "hot" among Ada developers

like other issues, for example speed of code execution, or

tasking/RTL performance.  Memory has generally been cheap

enough to justify upgrading the "project development" machine

and the limited number (sometimes only one) of "target" machines.



But in a large office complex with 100+ PC, careful thinking

must be given to purchasing a new WWW browser that would

require bumping everyone's RAM up by 8Mb or more.  And IMHO,

this is the kind of thing that would happen if current Ada
compilers were used as the development tool for producing
that new browser.



Smart linking is an simple idea which is hard to implement.

But it can be done, and I think it needs to be done as one

of the steps to make Ada a viable option for commercial

software developers, in addition to the work underway to

make Ada work with things like the Windows API.

There is no technical barrier, but it may be just a matter
of market dynamics: the C/C++ compiler vendors for the PC,
particularly Microsoft, Borland, and Symantec, have survived
in an aggressive business environment where their products
are scrutinized in trade journals and mass-market magazines
every few months.  Comparisons between them for code size,
execution speed, ease of use, feature sets, etc., are all
scored by developers and editors who put each product 
through a suite of tests and evaluate the results for the PC
programming community.  Detailed discussion of the merits
and demerits of each system (and subsystem) are provided to
give the readers an understanding of the trade-offs involved.
"Editor's choice" awards are given to the best, and numeric
results for the winners and losers are posted in large type
at the beginning of the article.

I assure you that these results are carefully considered 
as compiler selection criteria by developers and project
managers.


Of course, Ada has not hit the "big time" yet (cross your
fingers), but comparisons can be done on a smaller scale
within the Ada community: there is a standard compiler
evaluation suite (ACES:

    http://sw-eng.falls-church.va.us/AdaIC/testing/aces/README.html

) and I'm always suprised that there is so little published
about the results of such tests.  


Perhaps if such results were published, Ada vendors would be
provoked to go beyond the current state-of-the-art for Ada
compilers & up to the state-of-the-art for C/C++ compilers.


Stanley Allen
sallen@ghgcorp.com




  reply	other threads:[~1996-09-28  0:00 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-09-25  0:00 Executable File Size Differences Robert P. Kuzmicki
1996-09-25  0:00 ` Georgi Savov
1996-09-28  0:00   ` Stanley Allen [this message]
1996-09-28  0:00     ` Robert Dewar
1996-09-30  0:00     ` Richard A. O'Keefe
1996-10-01  0:00       ` Ken Cowan
1996-10-03  0:00         ` Stanley Allen
1996-10-04  0:00           ` Ada 95 - Performance vs. Pervasiveness (was: Executable File Size Diff Larry Kilgallen
1996-10-02  0:00   ` Executable File Size Differences Robert I. Eachus
1996-10-06  0:00     ` John Howard
1996-09-28  0:00 ` Simon FitzMaurice
1996-10-02  0:00 ` Jon S Anthony
1996-10-11  0:00 ` Robert I. Eachus
  -- strict thread matches above, loose matches on Subject: below --
1996-09-28  0:00 Robert Dewar
1996-09-28  0:00 ` Tony Picarello
1996-09-29  0:00 tmoran
1996-09-29  0:00 ` Robert Dewar
replies disabled

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