| Title: | C++ |
| Notice: | Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS) |
| Moderator: | DECCXX::AMARTIN |
| Created: | Fri Nov 06 1987 |
| Last Modified: | Thu Jun 05 1997 |
| Last Successful Update: | Fri Jun 06 1997 |
| Number of topics: | 3604 |
| Total number of notes: | 18242 |
CXX 5.5
OSF 3.2-d
This is about a performance problem of CXX on the OSF database, some of
you have already been made aware by mail: the customer is complaining
about the time needed to build programs, specially while rebuilding.
Knowing that this is an enormous development (the sample they send me is
about 1GB !), you can image the importance this become.
As recommended, now that I have some more precise information, I can open
a case.
The customer do not complain so much about the time needed to compile its
environment, but the fact that when they REBUILD something, much more
more pieces that needed seems to be rebuilt ?! I'm still trying the obtain
some information as I doesn't understand a lot of this, but the idea
passed to them that instanciation being regenerated because of the use of
other compilation options, lead them to look at the template's .cmd files.
There, they found some difference between the option given to the
compilation and the one found in the .cmd file. They wonder why and about
the impact of this. For example:
cxx -O1 -noinline -pthreads
becomes
-O2 -inline none -thread_safe -ansi_alias -weak_volatile
And they wonder why ? Any idea ?
Lost in the mystery of C++,
Mich�le.
Example of command:
-------------------
-signed -member_alignment -g0 -O2 -inline none -cpp -nocurrent_include
-show header -show source -readonly_strings -ansi_alias -weak_volatile
-thread_safe -ptr./cxx_repository -ptsuf.cxx.CXX.C.cc.CC.cpp.c
-D_REENTRANT -DALPHA -DOSF1 -DSTL_DEC -DCTIV_TRACE -D__ODMG_93__ -DO250
-I/ctiv/dvlpt/application/common/utilities/base_objects/unitest/ImpOutput
-I/ctiv/dvlpt/application/common/utilities/base_objects/unitest/tagged_files
-I/ctiv/dvlpt/application/common/utilities/base_objects/unitest
-I/ctiv/dvlpt/application/common/utilities/base_objects/unitest
-I/ctiv/integration/application/../tools/coverage/include
-I/ctiv/integration/application/../tools/coverage/src
-I/ctiv/integration/application/common/definitions/base_types/include
-I/ctiv/integration/application/common/definitions/base_types/src
-I/ctiv/integration/application/common/utilities/exceptions/include
-I/ctiv/integration/application/common/utilities/exceptions/src
-I/ctiv/integration/application/common/utilities/logging/include
-I/ctiv/integration/application/common/utilities/logging/src
-I/ctiv/integration/application/common/utilities/translation/include
-I/ctiv/integration/application/common/utilities/translation/src
-I/ctiv/integration/application/common/utilities/trace/include
-I/ctiv/integration/application/common/utilities/trace/src
-I/ctiv/integration/application/../tools/unit_test/include
-I/ctiv/integration/application/../tools/unit_test/src
-I/ctiv/dvlpt/application/common/utilities/base_objects/include
-I/ctiv/dvlpt/application/common/utilities/base_objects/src
-I/ctiv/integration/application/all_includes -I/o2/o250/include
-I/usr/include/cxx -I/usr/include -I/usr/sys/include
-I//usr/ilog/views22/include -I/cantata32/inc
-Xsd/ctiv/dvlpt/application/common/utilities/base_objects/unitest/
Example of the .cmd:
--------------------
cxx -ptv -c -o
/ctiv/dvlpt/application/common/utilities/base_objects/unitest/obj/d_CTIV_Notifyi
ngList.o
-DCTIV_DEBUG -ptr ./cxx_repository
-I/ctiv/dvlpt/application/common/utilities/base_objects/unitest/ImpOutput
-I/ctiv/dvlpt/application/common/utilities/base_objects/unitest/tagged_files
-I/ctiv/dvlpt/application/common/utilities/base_objects/unitest
-I/ctiv/dvlpt/application/common/utilities/base_objects/unitest
-I/ctiv/integration/application/common/definitions/base_types/include
-I/ctiv/integration/application/common/definitions/base_types/src
-I/ctiv/integration/application/common/utilities/exceptions/include
-I/ctiv/integration/application/common/utilities/exceptions/src
-I/ctiv/integration/application/common/utilities/logging/include
-I/ctiv/integration/application/common/utilities/logging/src
-I/ctiv/integration/application/common/utilities/translation/include
-I/ctiv/integration/application/common/utilities/translation/src
-I/ctiv/integration/application/common/utilities/trace/include
-I/ctiv/integration/application/common/utilities/trace/src
-I/ctiv/integration/application/../tools/unit_test/include
-I/ctiv/integration/application/../tools/unit_test/src
-I/ctiv/dvlpt/application/common/utilities/base_objects/include
-I/ctiv/dvlpt/application/common/utilities/base_objects/src
-I/ctiv/dvlpt/tools/coverage/include
-I/ctiv/integration/application/common/definitions/base_types/include
-I/ctiv/integration/application/common/utilities/base_objects/include
-I/ctiv/integration/application/common/utilities/exceptions/include
-I/ctiv/integration/application/common/utilities/fsm/include
-I/ctiv/integration/application/common/utilities/logging/include
-I/ctiv/integration/application/common/utilities/operator_dialoging/include
-I/ctiv/integration/application/common/utilities/tasking/include
-I/ctiv/integration/application/common/utilities/trace/include
-I/ctiv/integration/application/common/utilities/translation/include
-I/ctiv/integration/application/common/utilities/ctiv_types/include
-I/ctiv/integration/application/common/utilities/settings/include
-I/ctiv/integration/application/common/utilities/third_party/include
-I/ctiv/integration/application/pk/algorithms/algo_portability/include
-I/ctiv/integration/application/pk/algorithms/geo_modelling/include
-I/ctiv/integration/application/pk/algorithms/radio_modelling/include
-I/ctiv/integration/application/pk/algorithms/global_constants/include
-I/ctiv/integration/application/pk/algorithms/coverage_calculation/include
-I/ctiv/integration/application/pk/algorithms/projection/include
-I/ctiv/integration/application/pk/algorithms/synthesis_calculation/include
-I/ctiv/integration/application/pk/control/archive/include
-I/ctiv/integration/application/pk/control/scheduling/include
-I/ctiv/integration/application/pk/control/segment/include
-I/ctiv/integration/application/pk/control/cqp_interface/include
-I/ctiv/integration/application/pk/control/gcp_interface/include
-I/ctiv/integration/application/pk/control/orders/include
-I/ctiv/integration/application/pk/control/coarse_products/include
-I/ctiv/integration/application/pk/control/pk_settings/include
-I/ctiv/integration/application/pk/control/meteo/include
-I/ctiv/integration/application/pk/control/pci/include
-I/ctiv/integration/application/pk/i_o/tds/include
-I/ctiv/integration/application/pk/i_o/sriv_data
-I/ctiv/integration/application/common/definitions/base_types/src
-I/ctiv/integration/application/common/utilities/base_objects/src
-I/ctiv/integration/application/common/utilities/exceptions/src
-I/ctiv/integration/application/common/utilities/fsm/src
-I/ctiv/integration/application/common/utilities/logging/src
-I/ctiv/integration/application/common/utilities/operator_dialoging/src
-I/ctiv/integration/application/common/utilities/tasking/src
-I/ctiv/integration/application/common/utilities/trace/src
-I/ctiv/integration/application/common/utilities/translation/src
-I/ctiv/integration/application/common/utilities/ctiv_types/src
-I/ctiv/integration/application/common/utilities/settings/src
-I/ctiv/integration/application/common/utilities/third_party/src
-I/ctiv/integration/application/pk/algorithms/algo_portability/src
-I/ctiv/integration/application/pk/algorithms/geo_modelling/src
-I/ctiv/integration/application/pk/algorithms/radio_modelling/src
-I/ctiv/integration/application/pk/algorithms/global_constants/src
-I/ctiv/integration/application/pk/algorithms/coverage_calculation/src
-I/ctiv/integration/application/pk/algorithms/projection/src
-I/ctiv/integration/application/pk/algorithms/synthesis_calculation/src
-I/ctiv/integration/application/pk/control/archive/src
-I/ctiv/integration/application/pk/control/scheduling/src
-I/ctiv/integration/application/pk/control/segment/src
-I/ctiv/integration/application/pk/control/cqp_interface/src
-I/ctiv/integration/application/pk/control/gcp_interface/src
-I/ctiv/integration/application/pk/control/orders/src
-I/ctiv/integration/application/pk/control/coarse_products/src
-I/ctiv/integration/application/pk/control/pk_settings/src
-I/ctiv/integration/application/pk/control/meteo/src
-I/ctiv/integration/application/pk/control/pci/src
-I/ctiv/integration/application/pk/i_o/tds/src
-I/ctiv/integration/application/pk/i_o/sriv_data -I/o2/o250/include
-I/usr/include/cxx -I/usr/include -I/usr/sys/include
-I//usr/ilog/views22/include -I/cantata32/inc -DALPHA -DOSF1
-DSTL_DEC -DCTIV_TRACE -D__ODMG_93__ -DO250 -O1 -call_shared -lm
-nocurrent_include -pthread -lpthread -noinline -ptv
/ctiv/dvlpt/application/common/utilities/base_objects/unitest/tagged_files/d_CTI
V_NotifyingList.cc
Note I had to manipulate the file in order to include it here using
VMS, the record being too big to be included -- 5624 byte record too
large for user's buffer !!
| T.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 3540.1 | cxx on unix always generates template instantiation ? | BACHUS::SABLON | Mich�le Sablon, TP/IM Support Belgium 856-7238 | Fri Apr 18 1997 08:34 | 37 |
OK, a bit more that I understand.
I think we have now reached the real performance problem. Considering
their environment, with the enormous amount of source files and classes
they are using, the way the DEC CXX compiler works make the customer live
impossible. Effectively, it appears that:
1. Any and every cxx compilation of a CXX source containing reference to a
class (template instantiation) generates a .cxx and a .cmd in the
cxx_repository.
2. Every time the module is recompiled, those files are regenerated, being
exactly the same.
3. If several modules refer to a give class, the compilation of each of
them will generate these .cxx and .cmd of each class refered in each
module.
4. Although generally the same, the .cxx can vary slightly (include file
list not exactly the same. In the test performed, the .cmd was exactly
the same, but we can suspect it to vary in function of used compilation
option.
5. Finally, while the link is asked, all the classes used by the program
are (re)compiled in order to be linked with the different produced
objects.
If this is not a problem while creating small programs, it becomes a
nighmare in the customer environment with thousands of modules and I don't
know how much classes.
It appears to me that this is a modularity problem but it is maybe caused
by the way of working. Do you know anything of any way to go around it ?
Thanks in advance,
Mich�le.
| |||||
| 3540.2 | DECC::FOLTAN | Mon Apr 21 1997 16:33 | 12 | ||
Michele, Thanks for the problem report. I just sent you mail asking for the small reproducer that the customer been able to isolate. Thanks, Lois Foltan DEC C++ Development | |||||
| 3540.3 | fixed | DECCXX::MITCHELL | Tue May 20 1997 20:39 | 1 | |
This problem was fixed in T5.6 FT2. | |||||