 |
BorlandTalk.com Borland discussion newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Jonathan Neve[Microtec] Guest
|
Posted: Thu Dec 22, 2005 9:13 am Post subject: Re: Suggestions for a large projects |
|
|
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
|
Posted: Thu Dec 22, 2005 9:23 am Post subject: Suggestions for a large projects |
|
|
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
|
Posted: Thu Dec 22, 2005 10:15 am Post subject: Re: Suggestions for a large projects |
|
|
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
|
Posted: Thu Dec 22, 2005 11:25 am Post subject: Re: Suggestions for a large projects |
|
|
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
|
Posted: Thu Dec 22, 2005 11:25 am Post subject: Re: Suggestions for a large projects |
|
|
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
|
Posted: Thu Dec 22, 2005 12:07 pm Post subject: Re: Suggestions for a large projects |
|
|
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
|
Posted: Thu Dec 22, 2005 12:45 pm Post subject: Re: Suggestions for a large projects |
|
|
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
|
Posted: Thu Dec 22, 2005 12:47 pm Post subject: Re: Suggestions for a large projects |
|
|
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
|
Posted: Thu Dec 22, 2005 1:28 pm Post subject: Re: Suggestions for a large projects |
|
|
| 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 |
|
 |
|
|
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
|
|