/MP
(Birden çok işlemle derleme)
seçeneği /MP
, komut satırındaki kaynak dosyaları derlemek için toplam süreyi kısaltabilir. /MP
seçeneği, derleyicinin her biri ayrı bir işlemde bir veya daha fazla kopyasını oluşturmasına neden olur. Ardından bu örnekler kaynak dosyaları aynı anda derler. Bazı durumlarda, kaynak dosyaları derlemek için toplam süre önemli ölçüde azaltılabilir.
Sözdizimi
/MP
[processMax
]
Bağımsız değişkenler
processMax
(İsteğe bağlı) Derleyicinin oluşturabileceği işlem sayısı üst sınırı.
Bağımsız processMax
değişken 1 ile 65536 arasında olmalıdır. Aksi takdirde, derleyici D9014 uyarı iletisi verir, bağımsız değişkeni yoksayar processMax
ve işlem sayısı üst sınırının 1 olduğunu varsayar.
Bağımsız değişkeni atlarsanızprocessMax
, derleyici işletim sisteminden bilgisayarınızdaki etkin işlemci sayısını alır ve her işlemci için bir işlem oluşturur.
Açıklamalar
Derleyici /MP
seçeneği, birçok dosyayı derlerken derleme süresini önemli ölçüde azaltabilir. Derleme süresini geliştirmek için derleyici kendi kopyalarını oluşturur processMax
ve ardından kaynak dosyalarınızı aynı anda derlemek için bu kopyaları kullanır. bu /MP
seçenek derlemeler için geçerlidir, ancak bağlama veya bağlantı zamanı kodu oluşturma için geçerli değildir. Varsayılan olarak /MP
seçenek kapalıdır.
Derleme süresindeki geliştirme, bilgisayardaki işlemci sayısına, derlenecek dosya sayısına ve G/Ç kapasitesi gibi sistem kaynaklarının kullanılabilirliğine bağlıdır. Belirli bir projeyi oluşturmak için en iyi ayarı belirleme seçeneğiyle /MP
denemeler yapın. Bu kararı vermenizi sağlayacak öneriler için bkz . Yönergeler.
Uyumsuz seçenekler ve dil özellikleri
Bu /MP
seçenek bazı derleyici seçenekleri ve dil özellikleriyle uyumsuzdur. seçeneğiyle /MP
uyumlu olmayan bir derleyici seçeneği kullanırsanız, derleyici D9030 uyarısını /MP
oluşturur ve seçeneği yoksayar. Uyumsuz bir dil özelliği kullanıyorsanız, derleyici C2813 hatasını ve ardından geçerli derleyici uyarı düzeyi seçeneğine bağlı olarak sona erer veya devam eder.
Not
Çoğu seçenek uyumsuz çünkü izin verilirse, eşzamanlı olarak yürütülen derleyiciler çıkışlarını konsola veya belirli bir dosyaya aynı anda yazar. Sonuç olarak çıkış birbirine karışır ve bozuk olur. Bazı durumlarda, seçeneklerin birleşimi performansı daha kötü hale getirir.
Aşağıdaki tabloda, seçeneğiyle /MP
uyumlu olmayan derleyici seçenekleri ve dil özellikleri listelenmiştir:
Seçenek veya Dil Özelliği | Açıklama |
---|---|
#import önişlemci yönergesi |
Tür kitaplığındaki türleri C++ sınıflarına dönüştürür ve sonra bu sınıfları bir üst bilgi dosyasına yazar. |
/E , /EP |
Ön işlemci çıkışını standart çıkışa (stdout ) kopyalar. |
/Gm |
Kullanımdan kaldırıldı. Artımlı yeniden derlemeyi etkinleştirir. |
/showIncludes |
Ekleme dosyalarının listesini standart hataya (stderr ) yazar. |
/Yc |
Önceden derlenmiş bir üst bilgi dosyası yazar. |
Tanılama iletileri
Seçenekle /MP
uyumlu olmayan bir seçenek veya dil özelliği belirtirseniz bir tanılama iletisi alırsınız. Aşağıdaki tabloda, derleyicinin iletileri ve davranışı listelenmektedir:
Tanılama İletisi | Açıklama | Derleyici Davranışı |
---|---|---|
C2813 | yönergesi #import seçeneğiyle /MP uyumlu değildir. |
Derleyici uyarı düzeyi seçeneği aksini belirtmediği sürece derleme sona erer. |
D9014 | Bağımsız değişken için processMax geçersiz bir değer belirtildi. |
Derleyici geçersiz değeri yoksayar ve 1 değerini varsayar. |
D9030 | Belirtilen seçenek ile /MP uyumsuz. |
Derleyici seçeneği yoksayar /MP . |
Yönergeler
Performansı ölçme
Performansı ölçmek için toplam derleme süresini kullanın. Derleme süresini fiziksel bir saatle ölçebilir veya derlemenin ne zaman başlayıp durduğu arasındaki farkı hesaplayan yazılımları kullanabilirsiniz. Bilgisayarınızda birden çok işlemci varsa, fiziksel bir saat yazılım zamanı ölçümünden daha doğru sonuçlar verebilir.
Etkili işlemciler
Bir bilgisayarın, fiziksel işlemcilerinin her biri için etkili işlemciler olarak da bilinen bir veya daha fazla sanal işlemcisi olabilir. Her fiziksel işlemci bir veya daha fazla çekirdeğe sahip olabilir ve işletim sistemi bir çekirdek için hiper iş parçacığı oluşturmayı etkinleştirirse, her çekirdek iki sanal işlemci gibi görünür.
Örneğin, bir bilgisayarın tek bir çekirdeği olan bir fiziksel işlemcisi varsa ve hiper iş parçacığı kullanımı devre dışı bırakılmışsa bir etkin işlemci vardır. Buna karşılık, bir bilgisayarda her biri iki çekirdek ve tüm çekirdeklerde hiper iş parçacığı etkinleştirilmiş iki fiziksel işlemci varsa sekiz etkili işlemci vardır. Yani, (8 etkili işlemci) = (2 fiziksel işlemci) x (fiziksel işlemci başına 2 çekirdek) x (hiper iş parçacığı nedeniyle çekirdek başına 2 etkili işlemci).
seçeneğindeki processMax
/MP
bağımsız değişkeni atlarsanız, derleyici işletim sisteminden etkin işlemci sayısını alır ve sonra etkili işlemci başına bir işlem oluşturur. Ancak, derleyici belirli bir işlemcide hangi işlemin yürütülür garanti edebilir; bu kararı işletim sistemi verir.
İşlem sayısı
Derleyici, kaynak dosyaları derlemek için kullanacağı işlem sayısını hesaplar. Bu değer, komut satırında belirttiğiniz kaynak dosya sayısından ve seçeneğiyle açıkça veya örtük olarak belirttiğiniz işlem sayısından /MP
daha azdır. Seçeneğin bağımsız değişkenini /MP
sağlarsanızprocessMax
, işlem sayısı üst sınırını açıkça ayarlayabilirsiniz. Alternatif olarak, bağımsız değişkeni atlarsanız bilgisayardaki etkin işlemci sayısına eşit olan varsayılanı processMax
da kullanabilirsiniz.
Örneğin, aşağıdaki komut satırını belirttiğinizi varsayalım:
cl /MP7 a.cpp b.cpp c.cpp d.cpp e.cpp
Bu durumda, derleyici beş işlem kullanır çünkü bu beş kaynak dosyadan daha az ve en fazla yedi işlemdir. Alternatif olarak, bilgisayarınızın iki etkili işlemcisi olduğunu ve aşağıdaki komut satırını belirttiğinizi varsayalım:
cl /MP a.cpp b.cpp c.cpp
Bu durumda, işletim sistemi iki işlemci bildirir, bu nedenle derleyici hesaplamasında iki işlem kullanır. Sonuç olarak, derleyici derlemeyi yürütmek için iki işlem kullanır çünkü bu iki işlemden ve üç kaynak dosyadan daha azdır.
Kaynak dosyalar ve derleme sırası
Kaynak dosyalar, komut satırında göründükleri sırayla derlenmeyebilir. Derleyici, derleyicinin kopyalarını içeren bir dizi işlem oluştursa da, her işlem yürütülürken işletim sistemi zamanlanır. bu /MP
seçenek, kaynak dosyaların belirli bir sırada derlendiğini garantileyemez.
Bir kaynak dosya, derlemek için bir işlem kullanılabilir olduğunda derlenmiştir. İşlemlerden daha fazla dosya varsa, ilk dosya kümesi kullanılabilir işlemler tarafından derlenir. Kalan dosyalar, bir işlem önceki bir dosyayı işlemeyi bitirdiğinde işlenir ve kalan dosyalardan birinde çalışmak için kullanılabilir.
Komut satırında aynı kaynak dosyayı birden çok kez belirtmeyin. Örneğin, bir araç otomatik olarak projedeki bağımlılık bilgilerini temel alan bir derleme dosyası oluşturursa birden çok belirtim oluşabilir. Seçeneğini belirtmezseniz /MP
, derleyici dosya listesini sıralı olarak işler ve dosyanın her oluşumunu yeniden derler. Ancak, seçeneğini belirtirseniz /MP
, farklı derleyici örnekleri aynı dosyayı aynı anda derleyebilirsiniz. Farklı örnekler aynı anda aynı çıkış dosyasına yazmaya çalışabilir. Bir derleyici örneği çıkış dosyasına özel yazma erişimi alır ve başarılı olur ve diğer derleyici örnekleri dosya erişim hatasıyla başarısız olur.
Tür kitaplıklarını kullanma (#import
)
Derleyici, anahtarının yönergesinin #import
/MP
kullanımını desteklemez. Mümkünse, bu sorunu geçici olarak çözmek için şu adımları izleyin:
Çeşitli kaynak dosyalarınızdaki tüm
#import
yönergeleri bir veya daha fazla dosyaya taşıyın ve bu dosyaları seçeneği olmadan/MP
derleyin. Sonuç, oluşturulan üst bilgi dosyaları kümesidir.Kalan kaynak dosyalarınıza, oluşturulan üst bilgileri belirten yönergeleri ekleyin
#include
ve ardından seçeneğini kullanarak/MP
kalan kaynak dosyalarınızı derleyin.
Visual Studio Project ayarları
MSBuild aracı
Visual Studio, çözüm ve proje oluşturmak için () aracınımsbuild.exe
kullanırMSBuild
. /maxcpucount:number
MSBuild aracının (veya /m:number
) komut satırı seçeneği aynı anda birden çok proje oluşturabilir. Derleyici seçeneği aynı /MP
anda birden çok derleme birimi oluşturabilir. Uygulamanız için uygunsa veya hem /MP
/maxcpucount
hem de kullanarak çözümünüzün derleme süresini geliştirin.
Çözümünüzün derleme süresi kısmen derlemeyi gerçekleştiren işlem sayısına bağlıdır. number
MSBuild seçeneğinin /maxcpucount
bağımsız değişkeni, aynı anda derlemek için en fazla proje sayısını belirtir. Benzer şekilde, processMax
derleyici seçeneğinin /MP
bağımsız değişkeni, aynı anda derlemek için en fazla derleme birimi sayısını belirtir. /maxcpucount
seçeneği P projelerini ve /MP
seçeneği C işlemlerini belirtirse, en fazla P x C işlemi aynı anda yürütülür.
MSBuild'i mi yoksa /MP
teknolojiyi mi kullanacağınıza karar verme yönergeleri aşağıdaki gibidir:
Her projede az sayıda dosya içeren çok sayıda proje varsa, seçeneğiyle
/maxcpucount
BIRLIKTE MSBuild aracını kullanın.Her projede çok fazla dosyası olan az sayıda proje varsa seçeneğini kullanın
/MP
.Proje başına proje ve dosya sayısı dengeliyse, hem MSBuild
/MP
hem de kullanın. Başlangıçta seçeneği/maxcpucount
oluşturulacak proje sayısına ve/MP
bilgisayarınızda işlemci sayısına ayarlayın. Performansı ölçün ve ardından en iyi sonuçları elde etmek için ayarlarınızı yapın. Toplam derleme süresinden memnun kalana kadar bu döngüyü yineleyin.
Ayrıca bkz.
#import
Yönergesi
MSBuild komut satırı başvurusu
/Zf
(Daha hızlı PDB oluşturma)