Re: Multi Threading Options



> It is a performance and correctness issue. If you save 200ms by having
> your header file
> precompiled, you have to have a minimum of about 25 compilations with an
> unchanged header
> file to even break even. And you violate serious issues about structuring
> programs in the
> MFC culture by using those files in ways outside of their intent. For
> example, your ten
> externs cost you on the order of 150us to compile, at 70,000 slpm, not
> enough to justify a
> five-second rebuild on a change. File system caching and #pragma once work
> wonders to
> reduce that time either further. I finally came to the conclusion that
> every .h file must
> compile standalone, that is, whatever project files it takes to make it
> compile must be
> included in the .h file itself; it is not legitimate to assume the user
> will put the right
> headers in, or in the correct order. It took me years to come to that
> conclusion. The more
> I program, the more I am attracted by the notion of one function per file,
> when the
> functions are unrelated to each other.

The 3 main extern's in my list are:

CBot - The main controller for the application handling the 3rd party SDK
CAwAvatars - The collection of the avatar objects, and the searching
functions (PS: The average count of items in it is usually below 40)
CZoneManager - A large interface for a geographical area defenitions,
polygons etc.

I have no idea why it is compiling so slow then anyway...

------ Build started: Project: EclipseEvolution, Configuration: Debug
Win32 ------
Compiling...
stdafx.cpp
Compiling...
CountArray.cpp
xmlmanager.cpp
ZoneManager.cpp
Zone.cpp
MIFI_GraphicChart.cpp
CMIFI_2DGround.cpp
2DGround_ObjectMaps.cpp
2DGround_KeyControl.cpp
2DGround_Compass.cpp
2DGround_AxisControl.cpp
MIF_AvatarsKeys.cpp
MIF_Avatars.cpp
mif_Text.cpp
mif_SelectObject.cpp
mif_Rectangles.cpp
mif_Polygons.cpp
mif_Pens.cpp
mif_Lines.cpp
mif_Circles.cpp
MapIFBase.cpp
Generating Code...
Compiling...
MapDialog.cpp
MapIF_GraphTracker.cpp
MapIF_GraphChat.cpp
MapIF_Avatar.cpp
MapIF.cpp
awCore_AntiSeekerProperties.cpp
awCore_AntiSeeker.cpp
AwCore_VersionLock.cpp
AwCore_IPNotify.cpp
AwCore_Follow.cpp
AwCore_NoCaps.cpp
awCore_BannedIP.cpp
awCore_AddressList.cpp
WorldRights.cpp
awCore_Greetings.cpp
LoginProfileCollection.cpp
LoginDlg.cpp
cisWorldRights.cpp
cisGUIData.cpp
cisExecutionSequencers.cpp
Generating Code...
Compiling...
cisEjections.cpp
cisDispatch.cpp
cisChatOutput.cpp
cisBotTeleport.cpp
cisBotInformation.cpp
cisBotChanges.cpp
cisAvatarWarp.cpp
MD5Checksum.cpp
Coordinates.cpp
IEvtMgr.cpp
PrivilegeResolver.cpp
CoreCitizenResolver.cpp
CoreCitizenLookupMgr.cpp
DNSLookupMgr.cpp
TreeCtrlEx.cpp
DRSAddNewUserDlg.cpp
RightsMgrDlg.cpp
DynamicRights.cpp
BotConnect.cpp
Bot.cpp
Generating Code...
Compiling...
awBot_World.cpp
awBot_RcConverter.cpp
awBot_Properties.cpp
awBot_OutputMethods.cpp
awBot_Initialisation.cpp
awBot_GetData.cpp
awBot_EnterExit.cpp
awBot_ConnectionStates.cpp
awBot_Botgrams.cpp
World.cpp
awWorld_SkyColours.cpp
awCallback_Login.cpp
awCallback_Enter.cpp
awCallback_AvatarAddress.cpp
citizen_resolve.cpp
awEvent_WorldDisconnect.cpp
awEvent_WorldAttributes.cpp
awEvent_URL.cpp
awEvent_UniDisconnect.cpp
awEvent_Teleport.cpp
Generating Code...
Compiling...
awEvent_ConsoleMsg.cpp
awEvent_Chat.cpp
awEvent_Botgram.cpp
awEvent_AvatarDelete.cpp
awEvent_AvatarChange.cpp
awEvent_AvatarAdd.cpp
awAvatar_Zoning.cpp
awAvatar_Security.cpp
awAvatar_Reporting.cpp
awAvatar_Privileges.cpp
awAvatar_Messages.cpp
awAvatar_ListIcons.cpp
awAvatar_DataMiner.cpp
awAvatar_Constructor.cpp
awAvatar_CapsCheck.cpp
awAvatar_BuildStates.cpp
AwAvatar.cpp
awAvatars_UserCounts.cpp
awAvatars_NotifyStreams.cpp
AwAvatars.cpp
Generating Code...
Compiling...
rptBldr_Universe.cpp
rptBldr_CoreInfo.cpp
rptBldr_ByUserType.cpp
ReportBuilder.cpp
ListCtrlStyled.cpp
AvatarDisplayDlg.cpp
patterns.cpp
evo_database.cpp
Redirect.cpp
api_std.cpp
globals.cpp
Joystick.cpp
EclipseEvolution.cpp
PrivateMessageDlg.cpp
WorldEjectDlg.cpp
SelectAvatarsDlg.cpp
BotgramDlg.cpp
ConsoleMessageDlg.cpp
SelectDropdownDlg.cpp
EjectUserDlg.cpp
Generating Code...
Compiling...
InputSysExDlg.cpp
EditExtended.cpp
MultilineInputBoxDlg.cpp
InputBoxDlg.cpp
LocationDlg.cpp
WhisperDlg.cpp
ConfigFrameDlg.cpp
WorldDlg.cpp
EditBox.cpp
ConfigDlg_Section.cpp
ConfigDlg_Node.cpp
ConfigDlg_Master.cpp
PropertiesTree.cpp
AboutDlg.cpp
WorldRightsDlg.cpp
ReportFrame.cpp
MappingDlg.cpp
IndicatorPane.cpp
c:\Documents and Settings\Mark\Desktop\Eclipse
Evolution\IndicatorPane.cpp(66) : warning C4312: 'type cast' : conversion
from 'UINT' to 'HWND' of greater size
ColourPane.cpp
ColourButton.cpp
Generating Code...
Compiling...
evoDlg_ShellAPI.cpp
evoDlg_OnLoad.cpp
evoDlg_MessageMap.cpp
evoDlg_MenuManipulation.cpp
evoDlg_DoDataExchange.cpp
EclipseEvolutionDlg_Write.cpp
EclipseEvolutionDlg.cpp
AvatarDBDlg.cpp
evoDlg_OnSize.cpp
MYDerrivision.cpp
Generating Code...
Compiling resources...
Linking...
Creating library Debug/EVOAPP2.lib and object Debug/EVOAPP2.exp
Build log was saved at "file://c:\Documents and
Settings\Mark\Desktop\Eclipse Evolution\Debug\BuildLog.htm"
EclipseEvolution - 0 error(s), 1 warning(s)

---------------------- Done ----------------------
Build: 1 succeeded, 0 failed, 0 skipped

Execution Time: 1 minute 42 seconds, of that 8 seconds was creating the PCH,
a 1.8Ghz P4 with 3/4 of a GB of RAM. Total Lines: Approx 26,000.

The app is a total solution anyway, its never meant to have bits and bobs
taken from it as its all so intercombined.

--
- Mark Randall
http://zetech.swehli.com


.


Loading