Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 12 total
Thread DBISAM3 to ElevateDB - EXE size
Fri, Apr 11 2014 4:52 PMPermanent Link

Jeff Cook

Aspect Systems Ltd

Avatar

Hi

I'm almost through my oft interrupted DBISAM3 to ElevateDB conversion.
(Delphi 7 to XE too)

I've had to rewrite quite a bit of stuff, especially in relation to my
extensive use of Memory tables, but in the process have found plenty of
places to streamline my code, so I probably have fewer lines of code than
before.

I looked at my EXE size and was shocked(!) to see that it had leapt from
about 10Mb to 34Mb.

This seems wrong - I had expected a small increase with the extra
functionality of ElevateDB - but can't think of anything that would cause a
huge increase like this.

Is it normal?  Maybe I have stuff in my "uses" clauses that are redundant?
If so, how would I track them down?

Cheers

Jeff

--
Jeff Cook
Aspect Systems Ltd
www.aspect.co.nz

Sat, Apr 12 2014 3:16 AMPermanent Link

William Sigmund

That's the kind of increase in exe size I have seen, though not when
converting to EDB (that's to come). In my case it was caused by the
skin components of DevExpress. If you're a DevExpress user, untick the
ExpressSkin items in the design time package list.

William
Sat, Apr 12 2014 3:20 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Jeff


That reads more like the move from D7 to DXE than from DBISAM to ElevateDB. If you look on the Embarcadero forums there are frequent comments about this. Partly due to the new RTTI and partly due to UNICODE, possibly due to using a debug rather than a release profile and (I'd guess) partly due to just general code bloat.

There's a tool on the web (MapFileStats) which will analyse your project and tell you the size of various chunks. I used it in November last year - ElevateDB was 17% of my app so I doubt it accounts for the increase you're seeing. Blame Delphi Frown


Roy Lambert
Sat, Apr 12 2014 8:49 PMPermanent Link

Raul

Team Elevate Team Elevate

On 4/11/2014 4:52 PM, Jeff Cook wrote:
> I looked at my EXE size and was shocked(!) to see that it had leapt from
> about 10Mb to 34Mb.
>
> This seems wrong - I had expected a small increase with the extra
> functionality of ElevateDB - but can't think of anything that would cause a
> huge increase like this.
>

This does appear bit excessive - we're seeing approx 25% size increase
for exact same codebase on D2007 and XE2 (both ansistring so no unicode
at all - if you're swithing to unicode would expect additional small
increase).

Make sure you're actually doing a release build in XE (i.e. double click
the Release under Build Configuration as just picking release config in
options no longer changes your active config).

If you're not using RTTI then adding this into the drp right after the
program line (before uses) might help as well:

{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}


Raul



Sun, Apr 13 2014 10:47 PMPermanent Link

Jeff Cook

Aspect Systems Ltd

Avatar

"William Sigmund" wrote:

That's the kind of increase in exe size I have seen, though not when
converting to EDB (that's to come). In my case it was caused by the
skin components of DevExpress. If you're a DevExpress user, untick the
ExpressSkin items in the design time package list.


Thanks William

Can't blame it on DevExpress as I don't use it (yet).

Cheers

Jeff
Sun, Apr 13 2014 10:50 PMPermanent Link

Jeff Cook

Aspect Systems Ltd

Avatar

Roy Lambert wrote:

That reads more like the move from D7 to DXE than from DBISAM to ElevateDB. If you look on the Embarcadero forums there are frequent comments about this. Partly due to the new RTTI and partly due to UNICODE, possibly due to using a debug rather than a release profile and (I'd guess) partly due to just general code bloat.

There's a tool on the web (MapFileStats) which will analyse your project and tell you the size of various chunks. I used it in November last year - ElevateDB was 17% of my app so I doubt it accounts for the increase you're seeing. Blame Delphi Frown

--
Thanks Roy

MapFileStats tells me that EDB is only 5.6% of my app, so it can't be that. Very mysterious.

Cheers

Jeff
Sun, Apr 13 2014 11:09 PMPermanent Link

Jeff Cook

Aspect Systems Ltd

Avatar

Raul wrote:
>This does appear bit excessive - we're seeing approx 25% size increase
>or exact same codebase on D2007 and XE2 (both ansistring so no unicode
>t all - if you're swithing to unicode would expect additional small
>increase).
>
>Make sure you're actually doing a release build in XE (i.e. double click
>the Release under Build Configuration as just picking release config in
>options no longer changes your active config).
>
>If you're not using RTTI then adding this into the drp right after the
program line (before uses) might help as well:

>{$WEAKLINKRTTI ON}
>{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

Hi Raul

Yes, there was change to UNICODE too.

I tried changing to the configuration (see attached screen shot) but that seems to make no difference.  I had expected single stepping and breakpoints not to work if I did this (and perhaps madExcept to fail too) but everything seems normal.  I confess I have paid little attention to all the compile/link/debug options over the last 15 years of Delphi.  I have basically used it as it came out of the box and am ignorant of all the options.

The weaklink directive only reduced the EXE by less than 100kb.

Interestingly, UPX previously compressed the EXE down from 10Mb to 2.5Mb, now it compresses my bloated 35Mb down to 7Mb - similar ratios

Cheers and thanks to you, Rail + Roy and Sigmund



Attachments: debug option.jpg
Sun, Apr 13 2014 11:51 PMPermanent Link

Jeff Cook

Aspect Systems Ltd

Avatar

<Jeff Cook> wrote in message
news:F39BC0AC-1861-49CF-BD44-E0C37713B13C@news.elevatesoft.com...
>
> I tried changing to the configuration (see attached screen shot) but that
> seems to make no difference.  I had expected single stepping and
> breakpoints not to work if I did this (and perhaps madExcept to fail too)
> but everything seems normal.  I confess I have paid little attention to
> all the compile/link/debug options over the last 15 years of Delphi.  I
> have basically used it as it came out of the box and am ignorant of all
> the options.
>

In the Delphi XE compile messages it said:-

 Compiling apm.dproj (Debug, Win32)

.... so maybe my compile options aren't being used?

Cheers

Jeff
--
Jeff Cook
Aspect Systems Ltd
www.aspect.co.nz

Mon, Apr 14 2014 3:31 AMPermanent Link

Adam Brett

Orixa Systems

Jeff,

I had a similar problem moving up from D7 to XE2. My exe size went from 11 to 27meg.

I fished around for reasons (I am sure there are many!) and this helped a bit, but in the end I started using a product called UPX.

>>The Ultimate Packer for eXecutables
>>Markus Oberhumer, Laszlo Molnar & John Reiser
>>http://upx.sourceforge.net

This is a neat tool which can be incorporated into your POST BUILD events, and which seamlessly compressses your EXE. It leads to very slightly longer loading times for the user (hardly noticeable in my experience)  and reduces EXE to about 1/4 of prior size. Mine are now 7meg.

As it lengthens build-time I created a specific build configuration to use UPX, so that in general debugging UPX doesn't fire.

It has worked well for me without any problems, and its free.
Mon, Apr 14 2014 9:02 AMPermanent Link

Raul

Team Elevate Team Elevate

On 4/13/2014 11:09 PM, Jeff Cook wrote:
> I tried changing to the configuration (see attached screen shot) but that seems to make no difference.  I had expected single stepping and breakpoints not to work if I did this (and perhaps madExcept to fail too) but everything seems normal.  I confess I have paid little attention to all the compile/link/debug options over the last 15 years of Delphi.  I have basically used it as it came out of the box and am ignorant of all the options.

I'd say you're still in debug.

The screenshot you're showing has no effect on what the active
configuration is - this is one of the changes in newer delphis.

I don't have XE but in XE2 and XE5 you actually need to change it in the
project manager window (right hand side where the files are - there
should be a "Build Configuration" tree node with debug and release
underneath) - double click on release to make it active and then do a
clean and rebuild.


Raul




Attachments: delphi_buiild_config.jpg
Page 1 of 2Next Page »
Jump to Page:  1 2
Image