En iyi tahmin: Hata ayıklama yapıları G/Ç sınırlı iken, Sürüm oluşturma işlemleri işlemci sınırlı (bu durumda).
Yapım sistemimizde kapsamlı bir kıyaslama gerçekleştirdik - çok sayıda büyük proje, biraz küçük. DEBUG
, çok fazla *.pdb
bilgi, çok daha büyük *.obj
dosyaları (fazladan hata ayıklama bilgisi için), vb. Oluşturur. Sonuç, büyük ölçüde daha fazla disk etkinliğidir. Bu vs. Aksine
, RELEASE
çok küçük *.obj
dosyaları yazma ve gelmez oluşturur daha da size kaynak kodu (tablolar, semboller, dize hazır bilgi) içinde "değişmez" bir sürü varsa vurgulanır "Hata ayıklama" veritabanlarını yazmaktan çekinmeyin (RELEASE
'u tipik anahtarlarla derlerseniz). Ancak, RELEASE
'daki linker, optimizasyonlarını ve DEBUG
'da henüz yapılmayan diğer önemli işleri yapmak zorundadır, bu yüzden işlemci bağlıdır. Bu, en zorlayıcı-linker anahtarlarıyla "hız-maksimize-hız/boyut" derlerseniz RELEASE
için daha fazla zaman cezalandırılır.
(Ancak, evet, RELEASE
inşa gerekir çalıştırılabilir refah-on-disk yerleşik, ancak yürütülebilir RELEASE
yapı içinde çok küçük olduğundan, size sayfa çok hala I/O güncellemesi-adresler az, bu yüzden RELEASE
yapı içinde G/Ç ceza kadar DEBUG
yapı için olduğu gibi değildir.) bir 3 kez "RELEASE
DEBUG
daha pahalıdır" gözlemliyoruz
. Pek çok şablon, birçok sembol ve literal, vb. Ile I/O-bağlı olan bazı projeler için bu doğrudur. Sürücülerinizi kontrol edin - dolu olsun, ya da sadece "yavaş sürücüler" ve/veya bazı kötü sektörlerle ? Bu DEBUG
için daha kötü (daha yavaş) yapacaktır.
Evet, diğer yapılar "RELEASE
0x'dan 3 kat daha pahalı gibi bir şey" ile diğer yollardan olmalıdır. Bu yapılar, I/O-bağlı yerine işlemci/bağlayıcı-bağlıdır.
[UPDATE], bunun "statik kütüphane, bağlantı yok" sorusu hakkındaki yorumda görüyorum. Bu, I/O için bir zaman cezası (bir sürü disk faaliyeti, bağlantı yok) ve bir işlemci cezası olmaksızın (herhangi bir optimizasyon yapılmadığından) en kötü durum senaryosudur. Yani, bir 3x "DEBUG
-is-slower-RELEASE
" var ise, bu muhtemelen alabileceği kadar kötü (bu proje için), ve bu atipik değil. Bağlantı seçeneklerini eklediğinizde, RELEASE
yavaşlar.
Her ikisinde de önceden derlenmiş üstbilgileri mi kullanıyorsunuz? –
Yapı seçenekleri nelerdir? –
Evet PCH her ikisinde de./I/D PCH haricindeki yapı seçenekleri:/Od/Gm/EHsc/RTC1/MDd/W4/nologo/c/Wp64/ZI/TP/errorReport: komut istemi/wd4018/Zm200. Evet, orada "büyük bir opsiyonel dosya yazalım" diye merak ediyordum. Times kütüphaneyi kurmak için sadece bağlantı kurmayacak. – Philip