/LTCG (Bağlantı zamanı kodu oluşturma)

Tam program iyileştirmesi gerçekleştirmek veya profil destekli iyileştirme (PGO) izlemesi oluşturmak, eğitim gerçekleştirmek ve profil destekli iyileştirilmiş derlemeler oluşturmak için kullanın /LTCG .

Sözdizimi

/LTCG[:{INCREMENTALSTATUSOFF|NOSTATUS||}]

Bu seçenekler Visual Studio 2015'te başlayarak kullanım dışı bırakılmıştır:

/LTCG:{PGINSTRUMENT||PGOPTIMIZEPGUPDATE}

Bağımsız değişkenler

INCREMENTAL
(İsteğe bağlı) Bağlayıcının, projenin tamamı yerine yalnızca bir düzenlemeden etkilenen dosyalara program iyileştirme veya bağlantı zamanı kod oluşturma (LTCG) uygulamasını belirtir. Varsayılan olarak, bu bayrak belirtildiğinde /LTCG ayarlanmadı ve tüm proje tüm program iyileştirmesi kullanılarak bağlanır.

NOSTATUS | STATUS
(İsteğe bağlı) Bağlayıcının bağlantının tamamlanma yüzdesini gösteren bir ilerleme göstergesi görüntüleyip görüntülemediğini belirtir. Varsayılan olarak, bu durum bilgileri görüntülenmez.

OFF
(İsteğe bağlı) Bağlantı zamanı kod oluşturmayı devre dışı bırakır. Bağlayıcı ile /GL derlenen tüm modülleri bu seçenek olmadan derlenmiş gibi ele alır ve tüm MSIL modülleri bağlantının başarısız olmasına neden olur.

PGINSTRUMENT
(İsteğe bağlı) Bu seçenek Visual Studio 2015'te başlayarak kullanım dışı bırakılmıştır. Bunun yerine, /LTCG profil /GENPROFILE destekli iyileştirme için ve veya /FASTGENPROFILE kullanarak izlemeli bir derleme oluşturun. İzlemeli çalıştırmalardan toplanan veriler, iyileştirilmiş bir görüntü oluşturmak için kullanılır. Daha fazla bilgi için bkz . Profil Destekli İyileştirmeler. Bu seçeneğin kısa biçimi şeklindedir /LTCG:PGI.

PGOPTIMIZE
(İsteğe bağlı) Bu seçenek Visual Studio 2015'te başlayarak kullanım dışı bırakılmıştır. Bunun yerine, iyileştirilmiş bir görüntü oluşturmak için ve /USEPROFILE kullanın/LTCG. Daha fazla bilgi için bkz . Profil Destekli İyileştirmeler. Bu seçeneğin kısa biçimi şeklindedir /LTCG:PGO.

PGUPDATE
(İsteğe bağlı) Bu seçenek Visual Studio 2015'te başlayarak kullanım dışı bırakılmıştır. Bunun yerine, iyileştirilmiş bir görüntüyü yeniden derlemek için ve /USEPROFILE kullanın/LTCG. Daha fazla bilgi için bkz . Profil Destekli İyileştirmeler. Bu seçeneğin kısa biçimi şeklindedir /LTCG:PGU.

Açıklamalar

/LTCG seçeneği bağlayıcıya derleyiciyi çağırmasını ve tüm program iyileştirmesini gerçekleştirmesini söyler. Profil destekli iyileştirme de yapabilirsiniz. Daha fazla bilgi için bkz . Profil Destekli İyileştirmeler.

Aşağıdaki özel durumlarla, ve seçeneklerinin önceki PGO başlatma bileşiminde belirtilmemiş olan ve /GENPROFILE /USEPROFILE PGO birleşimine /LTCG /LTCG bağlayıcı seçenekleri ekleyemezsiniz:

ile birlikte belirtilen ve /GENPROFILE PGO'yu başlatma seçenekleriyle birlikte /LTCG belirtilen bağlayıcı seçeneklerinin ve /USEPROFILEkullanılarak /LTCG derlendiğinde belirtilmesi gerekmez; bunlar örtülür.

Bu makalenin geri kalanında tarafından /LTCGyapılan bağlantı zamanı kodu oluşturma işlemi ele alınmaktadır.

/LTCG ile /GLörtülüdür.

Bağlayıcı, kullanılarak /GL derlenmiş bir modülden veya MSIL modülünden geçirildiyse bağlantı zamanı kod oluşturmayı çağırır (bkz .netmodule . Bağlayıcı Girişi Olarak Dosyalar). Bağlayıcıya veya MSIL modüllerini geçirirken /GL açıkça belirtmezseniz/LTCG, bağlayıcı sonunda bu durumu algılar ve kullanarak /LTCGbağlantıyı yeniden başlatır. Mümkün olan en hızlı derleme performansı için bağlayıcıya ve MSIL modüllerini ne zaman geçireceğinizi /GL açıkça belirtin/LTCG.

Daha da hızlı performans için kullanın /LTCG:INCREMENTAL. Bu seçenek bağlayıcıya projenin tamamı yerine yalnızca kaynak dosya değişikliğinden etkilenen dosyaları yeniden açmasını söyler. Bu seçenek, gereken bağlantı süresini önemli ölçüde azaltabilir. Bu seçenek artımlı bağlama ile aynı seçenek değildir. Bu seçeneği kaldırırsanız /LTCG:INCREMENTAL , derleme sürelerini ve disk kullanımını iyileştirmek için herhangi bir /LTCGOUT seçeneği de kaldırın.

/LTCG ile /INCREMENTALkullanmak için geçerli değildir.

/LTCG, , /O1/O2veya /Oxkullanılarak /Ogderlenen modülleri bağlamak için kullanıldığında aşağıdaki iyileştirmeler gerçekleştirilir:

  • Modüller arası inlining

  • Yordamlar arası yazmaç ayırma (yalnızca 64 bit işletim sistemleri)

  • Özel çağrı kuralı (yalnızca x86)

  • Küçük TLS yer değiştirme (yalnızca x86)

  • Yığın çift hizalama (yalnızca x86)

  • Geliştirilmiş bellek belirsizliği (genel değişkenler ve giriş parametreleri için daha iyi girişim bilgileri)

Not

Bağlayıcı, her işlevi derlemek için hangi iyileştirmelerin kullanıldığını belirler ve bağlantı zamanında aynı iyileştirmeleri uygular.

ve /O2 kullanılması/LTCG, çift hizalama iyileştirmeye neden olur.

ve /O1 belirtilirse/LTCG, çift hizalama gerçekleştirilmez. Bir uygulamadaki işlevlerin çoğu hız için derlenmişse, boyut için derlenmiş birkaç işlevle (örneğin pragma kullanılarak optimize ), derleyici çift hizalama gerektiren işlevleri çağırırsa boyut için iyileştirilmiş işlevleri çift hizalar.

Derleyici bir işlevin tüm çağrı sitelerini tanımlayabilirse, derleyici açık çağırma kuralı değiştiricilerini yoksayar ve işlevin çağırma kuralını iyileştirmeye çalışır:

  • yazmaçlarda parametreleri geçirme

  • hizalama için parametreleri yeniden sıralama

  • kullanılmayan parametreleri kaldırma

İşlev bir işlev işaretçisi aracılığıyla çağrılırsa veya kullanılarak derlenen /GLbir modülün dışından bir işlev çağrılırsa, derleyici işlevin çağırma kuralını iyileştirmeye çalışmaz.

Not

kullanır /LTCG ve yeniden tanımlarsanız mainCRTStartup, uygulamanızın genel nesneler başlatılmadan önce yürütülen kullanıcı koduyla ilgili öngörülemeyen davranışları olabilir. Bu sorunu çözmenin üç yolu vardır: öğesini yeniden tanımlamayınmainCRTStartup, kullanarak /LTCGiçeren mainCRTStartup dosyayı derlemeyin veya genel değişkenleri ve nesneleri statik olarak başlatın.

/LTCG ve MSIL Modülleri

kullanılarak /GL derlenen ve /clr belirtildiğinde /LTCG bağlayıcıya giriş olarak kullanılabilen modüller.

  • /LTCG yerel nesne dosyalarını ve karışık yerel/yönetilen nesne dosyalarını (kullanılarak /clrderlenmiş) kabul edebilir. /clr:pure ve /clr:safe derleyici seçenekleri Visual Studio 2015'te kullanım dışıdır ve Visual Studio 2017 ve sonraki sürümlerde desteklenmez.

  • /LTCG:PGI ve kullanılarak /GL derlenen yerel modülleri kabul etmez /clr

Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için

Tüm Program İyileştirme özelliği, dahil olmak üzere /LTCGçeşitli derleyici ve bağlayıcı seçeneklerini ayarlar. Derleme yapılandırmasının tamamının ayarlarını değiştirmek için bu özelliği kullanmanızı öneririz. Projeniz için Tüm Program İyileştirmesini ayarlamak için:

  1. Proje Özellik Sayfaları iletişim kutusunu açın. Daha fazla bilgi için bkz . Derleyici ve derleme özelliklerini ayarlama.

  2. Yapılandırma Özellikleri>Genel özellik sayfasını seçin.

  3. Tüm Program İyileştirme özelliğini değiştirin. Değişikliklerinizi kaydetmek için Tamam'ı veya Uygula'yı seçin.

Ayrıca, menü çubuğundan Derleme>Profili Destekli İyileştirme'yi seçerek veya projenin kısayol menüsünde Profil Destekli İyileştirme seçeneklerinden birini seçerek de belirli derlemelere uygulayabilirsiniz./LTCG

Bağlantı Zaman Kodu Oluşturma'yı ayrı olarak etkinleştirmek veya belirli bir Bağlantı Zaman Kodu Oluşturma seçeneğini ayarlamak için:

  1. Proje Özellik Sayfaları iletişim kutusunu açın.

  2. Yapılandırma Özellikleri>Bağlayıcı>İyileştirme özellik sayfasını seçin.

  3. Bağlantı Zaman Kodu Oluşturma özelliğini aşağıdaki seçeneklerden biriyle değiştirin:

    • Varsayılan
    • Hızlı Bağlantı Zaman Kodu Oluşturma (LTCG:incremental) kullanma
    • Bağlantı Zaman Kodu Oluşturma (LTCG) kullanma
    • Profil Destekli İyileştirme - Alet (LTCG:PGInstrument)
    • Profil Destekli İyileştirme - İyileştirme (LTCG:PGOptimize)
    • Profil Destekli İyileştirme - Güncelleştirme (LTCG:PGUpdate)
  4. Değişikliklerinizi kaydetmek için Tamam'ı veya Uygula'yı seçin.

Bağlayıcının Bağlantı Zaman Kodu Oluşturma için bir ilerleme göstergesi görüntüleyip görüntülemediğini belirtmek için:

  1. Proje Özellik Sayfaları iletişim kutusunu açın.

  2. Yapılandırma Özellikleri>Bağlayıcısı>Genel özellik sayfasını seçin.

  3. Bağlantı Durumu özelliğini değiştirin. Değişikliklerinizi kaydetmek için Tamam'ı veya Uygula'yı seçin.

Bu derleyici seçeneğini program üzerinden ayarlamak için

Ayrıca bkz.

MSVC bağlayıcı başvurusu
MSVC bağlayıcı seçenekleri