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 09: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 17: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 21:39 | 1 | |
This problem was fixed in T5.6 FT2. |