/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
[:
{INCREMENTAL
STATUS
OFF
|NOSTATUS
||}]
Bu seçenekler Visual Studio 2015'te başlayarak kullanım dışı bırakılmıştır:
/LTCG:
{PGINSTRUMENT
||PGOPTIMIZE
PGUPDATE
}
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 /USEPROFILE
kullanılarak /LTCG
derlendiğinde belirtilmesi gerekmez; bunlar örtülür.
Bu makalenin geri kalanında tarafından /LTCG
yapı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 /LTCG
bağ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 /INCREMENTAL
kullanmak için geçerli değildir.
/LTCG
, , /O1
/O2
veya /Ox
kullanılarak /Og
derlenen 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 /GL
bir 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 /LTCG
iç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/clr
derlenmiş) 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:
Proje Özellik Sayfaları iletişim kutusunu açın. Daha fazla bilgi için bkz . Derleyici ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>Genel özellik sayfasını seçin.
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:
Proje Özellik Sayfaları iletişim kutusunu açın.
Yapılandırma Özellikleri>Bağlayıcı>İyileştirme özellik sayfasını seçin.
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)
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:
Proje Özellik Sayfaları iletişim kutusunu açın.
Yapılandırma Özellikleri>Bağlayıcısı>Genel özellik sayfasını seçin.
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
- Bkz. LinkTimeCodeGeneration.