/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.

Dekont

Ç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 Tanım
#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 Tanım 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 /MPuyumsuz. 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/maxcpucounthem 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 /MPhem 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)