Birden çok ortam, özellikle linux/gcc ve windows/msvc altında oluşturması gereken büyük bir proje üzerinde çalışıyorum. Yapıyı hızlandırmak için önceden derlenmiş üstbilgileri kullanırız.gcc'de (ancak görsel stüdyo ile büyük hızda) önceden derlenmiş başlıklar ile hızlandırma yok
Windows uygulaması çok verimli: dört çekirdekli hiper iş parçacıklı i7 yapım süremde 9 dakikadan 1,5 dakikaya iner. Ancak, önceden derlenmiş üstbilgileri kullanmanın performansı artırmadığı görülüyor: her iki durumda da, aynı bilgisayardaki sanal bir kutuda 22 dakika veya gerçek bir sunucuda yaklaşık 40 dakika.
Açıkçası, bir şekilde yanlış bir şey olduğunu ve önceden derlenmiş üstbilginin tekmelemediğini düşünüyorum. Ancak ne olduğunu bulamıyorum.
Makefillerimiz CMake tarafından üretilmiştir, bu yüzden üstbilgi ve kullanılan nesne dosyalarını derlemek için kullanılan kodu yapıştırın.
başlık oluşturma:
/usr/bin/c++ -O3 -DNDEBUG --no-warnings "-I/mnt/code/server a/src/game"
"-I/mnt/code/server a/src/game/vmap" "-I/mnt/code/server a/dep/include/g3dlite"
"-I/mnt/code/server a/dep/include" "-I/mnt/code/server a/src/shared"
"-I/mnt/code/server a/src/framework" "-I/mnt/code/server a/buildlinux"
"-I/mnt/code/server a/buildlinux/src/shared" -I/usr/include/mysql
"-I/mnt/code/server a/dep/acelite" -DDO_MYSQL -DHAVE_CONFIG_H
-DVERSION=\"0.6.1\" -DSYSCONFDIR=\"../etc/\" -D_RELEASE -D_NDEBUG -x c++-header
-o "/mnt/code/server a/buildlinux/src/game/pchdef.h.gch" "/mnt/code/server
a/src/game/pchdef.h"
bir nesne dosyası derleniyor:
/usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) "-I/mnt/code/server
a/buildlinux/src/game" -include pchdef.h -Winvalid-pch -o
CMakeFiles/game.dir/AccountMgr.cpp.o -c "/mnt/code/server
a/src/game/AccountMgr.cpp"
Insights takdir edilmektedir, bunlar doğrudan doğruya değil yukarıdaki snippet'lere kaynaklanıyor olsa bile.
, buldum yapı aşağı bile yavaşlatır GCC ile derlenmiş başlık kullanarak bu. CLANG bir süre önce daha iyiydi ama şimdi precompiled üstbilgileri kullanarak değersiz görünüyor, MSVC'den yararlanan tek derleyici olarak kalıyor. – Lothar