/OPT (İyileştirmeler)
LINK öğesinin bir yapı sırasında gerçekleştirdiği iyileştirmeleri denetler.
Sözdizimi
/OPT:{REF | NOREF}
/OPT:{ICF[=yinelemeler] | NOICF}
/OPT:{LBR | NOLBR}
Bağımsız değişkenler
| BAŞV NOREF
/OPT:REF , hiçbir zaman başvurulamayacak işlevleri ve verileri ortadan kaldırır; /OPT:NOREF , hiçbir zaman başvurulmayan işlevleri ve verileri tutar.
/OPT:REF etkinleştirildiğinde, LINK başvurulmayan paketlenmiş işlevleri ve COMDAT olarak bilinen verileri kaldırır. Bu iyileştirme, geçişli COMDAT eleme olarak bilinir. /OPT:REF seçeneği artımlı bağlamayı da devre dışı bırakır.
Bir sınıf bildirimi içinde tanımlanan iç işlevler ve üye işlevleri her zaman COMDAT'lardır. Bir nesne dosyasındaki tüm işlevler ,/Gy seçeneği kullanılarak derlenirse COMDAT'ler halinde oluşturulur. COMDAT'lara veri yerleştirmek const
için kullanarak __declspec(selectany)
bildirmeniz gerekir. Kaldırma veya katlama verilerini belirtme hakkında bilgi için bkz . selectany.
Varsayılan olarak, /OPT:NOREF veya /DEBUG belirtilmediği sürece bağlayıcı tarafından /OPT:REF etkinleştirilir. Bu varsayılanı geçersiz kılmak ve başvurulmayan COMDAT'ları programda tutmak için /OPT:NOREF belirtin. Belirli bir simgenin kaldırılmasını geçersiz kılmak için /INCLUDE seçeneğini kullanabilirsiniz.
/DEBUG belirtilirse, /OPT için varsayılan DEĞER NOREF'dir ve tüm işlevler görüntüde korunur. Bu varsayılanı geçersiz kılmak ve hata ayıklama derlemesini iyileştirmek için /OPT:REF belirtin. Bu, yürütülebilir dosyanızın boyutunu azaltabilir ve hata ayıklama derlemelerinde bile yararlı bir iyileştirme olabilir. Hata ayıklama derlemelerinde aynı işlevleri korumak için /OPT:NOICF de belirtmenizi öneririz. Bu yığın izlemelerini okumayı ve aksi takdirde birlikte katlanacak işlevlerde kesme noktalarını ayarlamayı kolaylaştırır.
ICF[=yinelemeler] | NOICF
Aynı COMDAT katlama işlemini gerçekleştirmek için ICF[yinelemeler] kullanın.= Fazlalık COMDAT'lar bağlayıcı çıktısından kaldırılabilir. İsteğe bağlı yinelemeler parametresi, yinelenenler için sembollerin kaç kez çapraz geçişine geçeceklerini belirtir. Varsayılan yineleme sayısı 1'dir. Ek yinelemeler, bir önceki yinelemede katlama sırasında kapsamda olmayan birden çok yineleme bulabilir.
Varsayılan olarak, /OPT:NOICF veya /DEBUG belirtilmediği sürece bağlayıcı tarafından /OPT:ICF etkinleştirilir. Bu varsayılanı geçersiz kılmak ve COMDAT'ların programda katlanmasını önlemek için /OPT:NOICF belirtin.
Bir hata ayıklama derlemesinde, COMDAT katlama özelliğini etkinleştirmek için /OPT:ICF'yi açıkça belirtmeniz gerekir. Ancak, /OPT:ICF özdeş verileri veya işlevleri birleştirebildiğinden, yığın izlemelerinde görünen işlev adlarını değiştirebilir. Ayrıca, belirli işlevlerde kesme noktaları ayarlamayı veya hata ayıklayıcıdaki bazı verileri incelemeyi olanaksız hale getirir ve kodunuzun tek adımını atarken sizi beklenmeyen işlevlere götürebilir. Kodun davranışı aynıdır, ancak hata ayıklayıcı sunusu çok kafa karıştırıcı olabilir. Bu nedenle, daha küçük kodun avantajları bu dezavantajlardan daha ağır basmadığı sürece hata ayıklama derlemelerinde /OPT:ICF kullanmanızı önermeyiz.
Not
/OPT:ICF aynı adresin farklı işlevlere veya salt okunur veri üyelerine (/Gy kullanılarak derlendiğinde değişkenler) atanmasına neden olabileceğinden, const
işlevler veya salt okunur veri üyeleri için benzersiz adreslere bağımlı olan bir programı bozabilir. Daha fazla bilgi için bkz . /Gy (İşlev Düzeyi Bağlamayı Etkinleştirme).
LBR | NOLBR
/OPT:LBR ve /OPT:NOLBR seçenekleri yalnızca ARM ikili dosyaları için geçerlidir. Belirli ARM işlemcisi dal yönergeleri sınırlı bir aralığa sahip olduğundan, bağlayıcı aralık dışı bir adrese atlama algılarsa, dal yönergesinin hedef adresini, gerçek hedefi hedefleyen bir dal yönergesi içeren "ada" kodunun adresiyle değiştirir. Genel kod boyutunu en aza indirmek üzere uzun dal yönergelerinin algılanması ve ara kod adalarının yerleştirilmesini iyileştirmek için /OPT:LBR kullanabilirsiniz. /OPT:NOLBR , bağlayıcıya en iyi duruma getirme olmadan karşılaşılan uzun dal yönergeleri için kod adaları oluşturmasını talimatı verir.
Varsayılan olarak, artımlı bağlama etkinleştirilmediğinde /OPT:LBR seçeneği ayarlanır. Artımlı olmayan bir bağlantı istiyorsanız ancak uzun dal iyileştirmeleri istemiyorsanız /OPT:NOLBR belirtin. /OPT:LBR seçeneği artımlı bağlamayı devre dışı bırakır.
Açıklamalar
Komut satırında kullanıldığında bağlayıcı varsayılan olarak /OPT:REF,ICF,LBR olarak kullanılır. /DEBUG belirtilirse varsayılan değer /OPT:NOREF,NOICF,NOLBR'dir.
/OPT iyileştirmeleri genellikle görüntü boyutunu azaltır ve program hızını artırır. Bu geliştirmeler daha büyük programlarda önemli olabilir. Bu nedenle perakende derlemeleri için varsayılan olarak etkinleştirilirler.
Bağlayıcı iyileştirmesi ön planda fazladan zaman alır, ancak iyileştirilmiş kod, bağlayıcının düzeltmek için daha az yeniden konumlandırması olduğunda ve daha küçük bir son görüntü oluşturduğunda zaman kazandırır ve PDB'ye işlemek ve pdb'ye yazmak için daha az hata ayıklama bilgisi olduğunda daha da fazla zaman kazandırır. İyileştirme etkinleştirildiğinde, analizdeki küçük ek maliyet bağlayıcıdaki zaman tasarrufunun daha küçük ikili dosyalar üzerinden geçmesine göre daha fazla fark olabileceğinden, genel olarak daha hızlı bağlantı süresine neden olabilir.
/OPT bağımsız değişkenleri virgülle ayrılmış olarak birlikte belirtilebilir. Örneğin, /OPT:REF /OPT:NOICF yerine /OPT:REF,NOICF belirtebilirsiniz.
/OPT:REF tarafından kaldırılan işlevleri ve /OPT:ICF tarafından katlanmış işlevleri görmek için /VERBOSE bağlayıcı seçeneğini kullanabilirsiniz.
/OPT bağımsız değişkenleri genellikle Visual Studio IDE'deki Yeni Proje iletişim kutusu kullanılarak oluşturulan projeler için ayarlanır ve genellikle hata ayıklama ve sürüm yapılandırmaları için farklı değerlere sahiptir. Projenizde bu bağlayıcı seçenekleri için değer ayarlanmadıysa, proje varsayılanlarını alabilirsiniz. Bu değer, komut satırında bağlayıcı tarafından kullanılan varsayılan değerlerden farklı olabilir.
Visual Studio geliştirme ortamındaki OPT:ICF veya OPT:REF bağlayıcı seçeneğini ayarlamak için
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>Bağlayıcı>İyileştirme özellik sayfasını seçin.
Bu özelliklerden birini değiştirin:
COMDAT Katlama'yı etkinleştirme
Başvurular
Visual Studio geliştirme ortamındaki OPT:LBR bağlayıcı seçeneğini ayarlamak için
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>Bağlayıcısı>Komut Satırı özellik sayfasını seçin.
Ek Seçenekler'e seçeneğini girin:
/opt:lbr
veya/opt:nolbr
Bu bağlayıcı seçeneğini program aracılığıyla ayarlamak için
- Bkz EnableCOMDATFolding . ve OptimizeReferences özellikleri.