BorlandTalk.com Forum Index BorlandTalk.com
Borland discussion newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Suggestions for a large projects

 
Post new topic   Reply to topic    BorlandTalk.com Forum Index -> Delphi Thirdparty Tools (General)
View previous topic :: View next topic  
Author Message
Jonathan Neve[Microtec]
Guest





PostPosted: Thu Dec 22, 2005 9:13 am    Post subject: Re: Suggestions for a large projects Reply with quote



Hi,

Carlos wrote:

Quote:
Hello,

I have a large project. It contains ~ 500 forms then when I rebuild
the compiling time is for various minutes (C++Builder 6). I am
interesed in personal comments for know how could I work more
eficient.

My ideas:

- convert the project in various dll ?
- store .obj .dfm etc in database and linking with the MainApp.exe at
runtime ? (Is it possible)

I have several projects with between 150 and 300 forms, and one very
large project with nearly 800 forms, so I'm quite familiar with this
problem. :-/

Your suggestions may be good/worth considering, and I think option 1
would probably have a big impact on compilation time (except of course
that it implies a good fragmentation of the project with few
interdependancies, which isn't always easy).

My only recommendation would be to use precompiled headers. My 800 form
project used to take about 45 minutes to compile. Now it takes 600-700
seconds. In other smaller projects, the speed increase was also
dramatic, going from about 500 seconds to sometimes less than a minute.
If you haven't done this, it's worth a try.
--
Best regards,
Jonathan Neve
_______________
CopyTiger - advanced database replicator for Interbase/Firebird!
Web : http://www.microtec.fr/copycat/ct
_______________________________________
CopyCat - database replication components for Delphi/C++Builder!
Web : http://www.microtec.fr/copycat/cc

Back to top
Carlos
Guest





PostPosted: Thu Dec 22, 2005 9:23 am    Post subject: Suggestions for a large projects Reply with quote



Hello,

I have a large project. It contains ~ 500 forms then when I rebuild
the compiling time is for various minutes (C++Builder 6). I am interesed in
personal comments for know how could I work more eficient.

My ideas:

- convert the project in various dll ?
- store .obj .dfm etc in database and linking with the MainApp.exe at
runtime ? (Is it possible)

I accept any sugerence.

Thanks in advance.


Back to top
Matthew Jones
Guest





PostPosted: Thu Dec 22, 2005 10:15 am    Post subject: Re: Suggestions for a large projects Reply with quote



Not sure what this is doing in a Delphi newsgroup, but obviously
using Delphi would make it a lot faster. 8-)

Assuming you have the precompiled headers all sorted out, the easiest way
to speed things up is to use ".lib" libraries. I used to put things that
weren't changed much in libraries so they would just link in and not need
a recompile.

/Matthew Jones/
Back to top
Carlos
Guest





PostPosted: Thu Dec 22, 2005 11:25 am    Post subject: Re: Suggestions for a large projects Reply with quote

Thank you for your suggestions

I can´t use it:

[C++ Warning] DB.hpp(327): W8058 Cannot create pre-compiled header:
initialized data in header
TField* __fastcall CreateFieldComponent(Classes::TComponent* Owner,
TObjectField* ParentField = (TObjectField*)(0x0), AnsiString FieldName =
"");

I don´t know that means it.

"Jonathan Neve[Microtec]" <jonathan (AT) microtec (DOT) fr> escribió en el mensaje
news:xn0ebahes7cd7q001jmn_microtec (AT) forums (DOT) borland.com...
Quote:
Hi,

Carlos wrote:

Hello,

I have a large project. It contains ~ 500 forms then when I rebuild
the compiling time is for various minutes (C++Builder 6). I am
interesed in personal comments for know how could I work more
eficient.

My ideas:

- convert the project in various dll ?
- store .obj .dfm etc in database and linking with the MainApp.exe at
runtime ? (Is it possible)

I have several projects with between 150 and 300 forms, and one very
large project with nearly 800 forms, so I'm quite familiar with this
problem. :-/

Your suggestions may be good/worth considering, and I think option 1
would probably have a big impact on compilation time (except of course
that it implies a good fragmentation of the project with few
interdependancies, which isn't always easy).

My only recommendation would be to use precompiled headers. My 800 form
project used to take about 45 minutes to compile. Now it takes 600-700
seconds. In other smaller projects, the speed increase was also
dramatic, going from about 500 seconds to sometimes less than a minute.
If you haven't done this, it's worth a try.
--
Best regards,
Jonathan Neve
_______________
CopyTiger - advanced database replicator for Interbase/Firebird!
Web : http://www.microtec.fr/copycat/ct
_______________________________________
CopyCat - database replication components for Delphi/C++Builder!
Web : http://www.microtec.fr/copycat/cc



Back to top
Carlos
Guest





PostPosted: Thu Dec 22, 2005 11:25 am    Post subject: Re: Suggestions for a large projects Reply with quote

Thank you for your suggestions

"Matthew Jones" <matthew (AT) matthewdelme-jones (DOT) delme.com> escribió en el
mensaje news:memo.20051222101519.3092F (AT) nothanks (DOT) nothanks.co.uk...
Quote:
Not sure what this is doing in a Delphi newsgroup, but obviously
using Delphi would make it a lot faster. 8-)

Assuming you have the precompiled headers all sorted out, the easiest way
to speed things up is to use ".lib" libraries. I used to put things that
weren't changed much in libraries so they would just link in and not need
a recompile.

/Matthew Jones/



Back to top
Carlos
Guest





PostPosted: Thu Dec 22, 2005 12:07 pm    Post subject: Re: Suggestions for a large projects Reply with quote

I am receiving errors when I compile with "use precompiled headers"
The last error is "Unable to scan program´s header" but If I have been built
the project
the last minute !.

thank you for your help

"Jonathan Neve[Microtec]" <jonathan (AT) microtec (DOT) fr> escribió en el mensaje
news:xn0ebahes7cd7q001jmn_microtec (AT) forums (DOT) borland.com...
Quote:
Hi,

Carlos wrote:

Hello,

I have a large project. It contains ~ 500 forms then when I rebuild
the compiling time is for various minutes (C++Builder 6). I am
interesed in personal comments for know how could I work more
eficient.

My ideas:

- convert the project in various dll ?
- store .obj .dfm etc in database and linking with the MainApp.exe at
runtime ? (Is it possible)

I have several projects with between 150 and 300 forms, and one very
large project with nearly 800 forms, so I'm quite familiar with this
problem. :-/

Your suggestions may be good/worth considering, and I think option 1
would probably have a big impact on compilation time (except of course
that it implies a good fragmentation of the project with few
interdependancies, which isn't always easy).

My only recommendation would be to use precompiled headers. My 800 form
project used to take about 45 minutes to compile. Now it takes 600-700
seconds. In other smaller projects, the speed increase was also
dramatic, going from about 500 seconds to sometimes less than a minute.
If you haven't done this, it's worth a try.
--
Best regards,
Jonathan Neve
_______________
CopyTiger - advanced database replicator for Interbase/Firebird!
Web : http://www.microtec.fr/copycat/ct
_______________________________________
CopyCat - database replication components for Delphi/C++Builder!
Web : http://www.microtec.fr/copycat/cc



Back to top
Jonathan Neve[Microtec]
Guest





PostPosted: Thu Dec 22, 2005 12:45 pm    Post subject: Re: Suggestions for a large projects Reply with quote

Carlos wrote:

Quote:
Thank you for your suggestions

I can4t use it:

[C++ Warning] DB.hpp(327): W8058 Cannot create pre-compiled header:
initialized data in header TField* __fastcall
CreateFieldComponent(Classes::TComponent* Owner, TObjectField*
ParentField = (TObjectField*)(0x0), AnsiString FieldName = "");

I don4t know that means it.

This warning indicates that the headers you're trying to precompile
can't be used. Some can, some can't. I'm surprised however that you get
that warning for DB.hpp...

What you need to do is create a new header file of your own, and put in
it the main #include's that you have in your applications (VCL and
third-party), and include that header in all units, before the "#pragma
hdrstop". It takes a bit of fiddling with, because some headers
mysteriously slow down compilation, while others (no less mysteriously)
improve the speed significantly.

Here's an example of a header file I use:

//----------------------------------------------------------------------
#ifndef headersH
#define headersH
//----------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>

#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Menus.hpp>
#include <ExtCtrls.hpp>
#include <Buttons.hpp>
#include <DBTables.hpp>
#include <DB.hpp>
#include <DBGrids.hpp>
#include <DBCtrls.hpp>
#include <Graphics.hpp>
#include <QuickRpt.hpp>
#include <QRExpr.hpp>
#include <QRCtrls.hpp>
#include <Tabs.hpp>
#include <Dialogs.hpp>
#include <Mask.hpp>
#include "Grids.hpp"
#include <ImgList.hpp>

#include "RXDBCtrl.hpp"
#include "RxQuery.hpp"
#include "MemTable.hpp"
#include "RxLookup.hpp"

#include "EsLabel.hpp"
#include "EsGrad.hpp"
#include "EsMarque.hpp"
#include "EsMnuBtn.hpp"
#include "EsBase.hpp"

#include "FIBDatabase.hpp"
#include "pFIBDatabase.hpp"
#include "SIBEABase.hpp"
#include "SIBFIBEA.hpp"
#endif

Furthermore, the best thing is to check the "Cache precompiled headers"
option in Project->Options, and give it an arbitrary file name to cache
the precompiled headers in (I usually use the project name followed by
".PCH").

Hope this helps.
--
Best regards,
Jonathan Neve
_______________
CopyTiger - advanced database replicator for Interbase/Firebird!
Web : http://www.microtec.fr/copycat/ct
_______________________________________
CopyCat - database replication components for Delphi/C++Builder!
Web : http://www.microtec.fr/copycat/cc

Back to top
Jonathan Neve[Microtec]
Guest





PostPosted: Thu Dec 22, 2005 12:47 pm    Post subject: Re: Suggestions for a large projects Reply with quote

David Perkins wrote:

Quote:
I can´t use it:

[C++ Warning] DB.hpp(327): W8058 Cannot create pre-compiled header:
initialized data in header TField* __fastcall
CreateFieldComponent(Classes::TComponent* Owner, TObjectField*
ParentField = (TObjectField*)(0x0), AnsiString FieldName = "");

Things like that are not usually the cause of this error. Typically,
I've found that third-party .hpp files include math.hpp which
initialises some data in the header.

Exactly. But many don't, so it's worth trying out all the third-party
libraries you use, to be sure whether you can precompile them or not.
One thing's for sure, if you get this warning, there's no point going
on, there won't be any speed increase.
--
Best regards,
Jonathan Neve
_______________
CopyTiger - advanced database replicator for Interbase/Firebird!
Web : http://www.microtec.fr/copycat/ct
_______________________________________
CopyCat - database replication components for Delphi/C++Builder!
Web : http://www.microtec.fr/copycat/cc

Back to top
David Perkins
Guest





PostPosted: Thu Dec 22, 2005 1:28 pm    Post subject: Re: Suggestions for a large projects Reply with quote

Quote:
I can´t use it:

[C++ Warning] DB.hpp(327): W8058 Cannot create pre-compiled header:
initialized data in header
TField* __fastcall CreateFieldComponent(Classes::TComponent* Owner,
TObjectField* ParentField = (TObjectField*)(0x0), AnsiString FieldName =
"");

Things like that are not usually the cause of this error. Typically,
I've found that third-party .hpp files include math.hpp which
initialises some data in the header.

Back to top
Display posts from previous:   
Post new topic   Reply to topic    BorlandTalk.com Forum Index -> Delphi Thirdparty Tools (General) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.