BewareMyPower opened a new issue, #60: URL: https://github.com/apache/pulsar-client-cpp/issues/60
Currently the build time is long and the binary size is large. For example, building the C++ client with the default CMake options in my laptop with 8 threads is: ```bash $ cmake -B build $ time cmake --build build -j8 real 4m36.426s user 31m50.682s sys 1m24.831s $ ls -lhS build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/*.o | head -n 10 -rw-r--r-- 1 xyz xyz 25M Oct 21 14:09 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/ClientConnection.cc.o -rw-r--r-- 1 xyz xyz 19M Oct 21 14:08 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/ClientImpl.cc.o -rw-r--r-- 1 xyz xyz 13M Oct 21 14:08 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/ConsumerImpl.cc.o -rw-r--r-- 1 xyz xyz 12M Oct 21 14:09 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/PatternMultiTopicsConsumerImpl.cc.o -rw-r--r-- 1 xyz xyz 11M Oct 21 14:09 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/MultiTopicsConsumerImpl.cc.o -rw-r--r-- 1 xyz xyz 11M Oct 21 14:09 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/ProducerImpl.cc.o -rw-r--r-- 1 xyz xyz 7.4M Oct 21 14:08 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/HTTPLookupService.cc.o -rw-r--r-- 1 xyz xyz 6.6M Oct 21 14:09 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/Url.cc.o -rw-r--r-- 1 xyz xyz 6.5M Oct 21 14:08 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/BinaryProtoLookupService.cc.o -rw-r--r-- 1 xyz xyz 6.0M Oct 21 14:09 build/lib/CMakeFiles/PULSAR_OBJECT_LIB.dir/PartitionedProducerImpl.cc.o ``` The top 10 largest objects all include the `PulsarApi.pb.h`. The main cause is the protobuf-generated files are too large and the header is unnecessarily included in many headers. ```bash $ wc -l generated/lib/PulsarApi.pb.h 29866 generated/lib/PulsarApi.pb.h $ wc -l generated/lib/PulsarApi.pb.cc 29393 generated/lib/PulsarApi.pb.cc ``` We should avoid the direct includes on `PulsarApi.pb.h` as much as possible, which increases the binary size and compilation time. Another problem is that the forward declarations are not common used in the project, which does not only applies for `PulsarApi.pb.h`. When some header files are modified, many source files needs to be recompiled. It really harms the develop experience. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
