Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Profil destekli iyileştirme (PGO), iyileştiricinin .exe veya .dll dosyasının test çalıştırmalarından verileri kullandığı yürütülebilir dosyanın tamamını iyileştirmenize olanak tanır. Veriler, programın üretim ortamındaki olası performansını temsil eder.
Profil destekli iyileştirmeler yalnızca x86, x64 veya ARM64 yerel hedefleri için kullanılabilir. Ortak dil çalışma zamanında çalışan yürütülebilir dosyalar için profil destekli iyileştirmeler kullanılamaz. Karma yerel ve yönetilen kod içeren bir derleme oluştursanız bile (/clr derleyici seçeneğini kullanarak), yalnızca yerel kodda profil destekli iyileştirmeyi kullanamazsınız. IDE'de bu seçeneklerin ayarlandığı bir proje derlemeye çalışırsanız derleme hatası oluşur.
Not
Profil oluşturma testi çalışmaları sırasında elde edilen bilgiler, /Ob, /Os veya /Ot belirtseniz dahi geçerli olacak iyileştirmelerin geçerliliğini yitirmesine neden olur. Daha fazla bilgi için bkz . /Ob (Satır içi İşlev Genişletme) ve /Os, /Ot (Küçük Kodu Tercih Et, Hızlı Kodu Tercih Et).
Uygulamanızı iyileştirme adımları
Profil destekli iyileştirmeyi kullanmak için uygulamanızı iyileştirmek için şu adımları izleyin:
/GL ile bir veya daha fazla kaynak kodu dosyası derleyin.
/GL ile oluşturulan her modül, çalışma zamanı davranışını yakalamak için profil destekli iyileştirme testi çalıştırmaları sırasında incelenebilir. Profil destekli iyileştirme derlemesindeki her modülün /GL ile derlenmiş olması gerekmez. Ancak, yalnızca /GL ile derlenen modüller enstrümente edilir ve daha sonra profil yönlendirmeli optimizasyonlar için kullanılabilir.
Link oluşturmak için /LTCG ve /GENPROFILE veya /FASTGENPROFILE kullanın.
hem /LTCG hem de /GENPROFILE veya /FASTGENPROFILE kullanıldığında, enstrümente edilmiş uygulama çalıştırıldığında bir
.pgddosyası oluşturulur. Test çalıştırması verileri dosyaya.pgdeklendikten sonra, sonraki bağlantı adımına giriş olarak kullanılabilir (iyileştirilmiş görüntü oluşturulur). - "/GENPROFILE belirtirken, PGD=dosyaadı argümanını ekleyerek.pgddosyası için varsayılan olmayan bir isim veya konum belirtebilirsiniz." /LTCG ve /GENPROFILE veya /FASTGENPROFILE bağlayıcı seçeneklerinin birleşimi, kullanım dışı /LTCG:PGINSTRUMENT bağlayıcı seçeneğinin yerini alır.Uygulamanın profilini oluşturun.
Profili oluşturulmuş exe oturumu her sona erdiğinde veya profili oluşturulmuş DLL kaldırıldığında bir
appname!N.pgcdosya oluşturulur. Dosya.pgc, belirli bir uygulama testi çalıştırması hakkında bilgi içerir. appname uygulamanızın adıdır ve N , dizindeki diğerappname!N.pgcdosyaların sayısına göre artırılan 1 ile başlayan bir sayıdır. Test çalıştırması iyileştirmek istediğiniz bir senaryoyu temsil etmiyorsa dosyayı silebilirsiniz.pgc.Bir test çalıştırması sırasında, şu anda açık
.pgcolan dosyanın kapatılmasını ve pgosweep yardımcı programıyla yeni.pgcbir dosya oluşturulmasını zorlayabilirsiniz (örneğin, bir test senaryosunun sonu uygulama kapatma ile çakışmadığında).Uygulamanız, çağrı noktasındaki profil verilerini bir
.pgcdosyası olarak yakalamak için doğrudan PgoAutoSweep işlevini çağırabilir. Bu, dosyalarınızdaki.pgcyakalanan verilerin kapsadığı kod üzerinde daha iyi denetim sahibi olmanıza yardımcı olabilir. Bu işlevin nasıl kullanılacağına ilişkin bir örnek için PgoAutoSweep belgelerine bakın.İzlemeli derlemenizi oluşturduğunuzda, veri toplama işlemi varsayılan olarak iş parçacığı güvenli olmayan modda yapılır ve bu daha hızlıdır, fakat doğru sonuçlar vermeyebilir. EXACT bağımsız değişkenini /GENPROFILE veya /FASTGENPROFILE için kullanarak, daha kesin ancak daha yavaş olan iş parçacığı güvenli modda veri toplamayı belirtebilirsiniz. Bu seçenek, devre dışı bırakılan PogoSafeMode ortam değişkenini veya izlemeli derlemenizi oluşturduğunuzda devre dışı bırakılan /POGOSAFEMODE bağlayıcı seçeneğini ayarlarsanız da kullanılabilir.
/LTCG ve /USEPROFILE kullanarak bağlantı.
İyileştirilmiş görüntüyü oluşturmak için hem /LTCG hem de /USEPROFILE bağlayıcı seçeneklerini kullanın. Bu adım,
.pgddosyasını girdi olarak alır. /USEPROFILE belirttiğinizde,isteğe bağlı olarak PGD= dosyaadı argümanını ekleyerekdosyası için varsayılan olmayan bir isim veya konum belirtebilirsiniz. Bu adı, kullanım dışı /PGD bağlayıcısı seçeneğini kullanarak da belirtebilirsiniz. /LTCG ve /USEPROFILE birleşimi, kullanım dışı bırakılan /LTCG:PGOPTIMIZE ve /LTCG:PGUPDATE bağlayıcı seçeneklerinin yerini alır.
İyileştirilmiş yürütülebilir dosyayı oluşturmak ve daha sonra daha iyileştirilmiş bir görüntü oluşturmak için ek profil oluşturmanın yararlı olacağını belirlemek bile mümkündür. İzlemeli görüntü ve .pgd dosyası kullanılabilir durumdaysa, aynı /LTCG ve /USEPROFILE/ bağlayıcı seçeneklerini kullanarak ek test çalıştırmaları yapabilir ve daha yeni .pgd dosyasıyla en iyi duruma getirilmiş görüntüyü yeniden oluşturabilirsiniz.
Not
Hem .pgc hem de .pgd dosyaları ikili dosya türleridir. Bir kaynak denetim sisteminde depolanıyorsa, metin dosyalarına yapılabilecek otomatik dönüştürmelerden kaçının.
PGO tarafından gerçekleştirilen iyileştirmeler
Profil destekli iyileştirmeler şu denetimleri ve iyileştirmeleri içerir:
Satır içi - Örneğin, A işlevi sık sık B işlevini çağırıyorsa ve B işlevi nispeten küçükse, profil destekli iyileştirmeler, B işlevini A işlevine satır içi yerleştirir.
Sanal Çağrı Tahmini - Bir sanal çağrı veya işlev işaretçisi aracılığıyla yapılan başka bir çağrı belirli bir işlevi sık sık hedeflerse, profil destekli bir iyileştirme sık hedeflenen işleve koşullu olarak yürütülen bir doğrudan çağrı ekleyebilir ve doğrudan çağrı satır içine alınabilir.
Kayıt Ayırma - Profil verilerine göre iyileştirme, daha iyi kayıt ayırması sağlar.
Temel Blok İyileştirme - Temel blok iyileştirmesi, belirli bir çerçeve içinde zamansal olarak yürütülen yaygın olarak yürütülen temel blokların aynı sayfa kümesine (yerellik) yerleştirilmesine olanak tanır. Kullanılan sayfa sayısını en aza indirir ve bu da bellek yükünü en aza indirir.
Boyut/Hız İyileştirme - Programın en fazla yürütme zamanını harcadığı işlevler hız için iyileştirilebilir.
İşlev Düzeni - Çağrı grafiğine ve profili oluşturulmuş çağıran/çağıran davranışına bağlı olarak, aynı yürütme yolu boyunca olma eğiliminde olan işlevler aynı bölüme yerleştirilir.
Koşullu Dal İyileştirme - Değer yoklamalarıyla, profil destekli iyileştirmeler switch deyimindeki belirli bir değerin diğer değerlerden daha sık kullanılıp kullanılmadiğini bulabilir. Bu değer daha sonra switch deyiminden çekilebilir. ** Optimizatör
if...elseyönergelerinin sırasınıif...elseile düzenleyebilir, böylece hangi blok daha sık doğruysaifveyaelsebloğu önce yerleştirilir.Geçersiz Kod Ayırma - Profil oluşturma sırasında çağrılmamış kod, bölüm kümesinin sonuna eklenen özel bir bölüme taşınır. Bu bölümü etkin bir şekilde sık kullanılan sayfalardan uzak tutar.
EH Kod Ayrımı - EH kodu yalnızca istisnai durumlarda çalıştırıldığı için genellikle ayrı bir bölüme taşınabilir. Profil destekli iyileştirmeler özel durumların yalnızca istisnai koşullarda gerçekleştiğini saptayabildiğinde taşınır.
Bellek Tanımlayıcıları - Bir tanımlayıcının genişletilip genişletilmeyeceği, sıklıkla çağrılıp çağrılmadığına bağlıdır. Bir içsel, taşımaların veya kopyaların blok boyutuna göre iyileştirilebilir.
Sonraki adımlar
Profil destekli iyileştirmelerde kullanabileceğiniz bu ortam değişkenleri, işlevler ve araçlar hakkında daha fazla bilgi edinin:
Profil destekli iyileştirmeler için ortam değişkenleri
Bu değişkenler, test senaryolarının çalışma zamanı davranışını belirtmek için kullanılmıştır. Artık kullanım dışı bırakıldılar ve yeni bağlayıcı seçenekleriyle değiştirildiler. Bu belge, ortam değişkenlerinden bağlayıcı seçeneklerine nasıl geçiş yapılacağını gösterir.
PgoAutoSweep
Uygulamanıza, ayrıntılı dosya veri yakalamayı kontrol sağlamak için ekleyebileceğiniz bir işlev.
pgosweep
Bir komut satırı yardımcı programı, tüm profil verilerini .pgc dosyasına yazar, .pgc dosyasını kapatır ve yeni bir .pgc dosyası açar.
pgomgr
Bir veya daha fazla .pgc dosyasından .pgd dosyasına profil verilerini ekleyen bir komut satırı yardımcı programı.
Nasıl yapılır: Birden çok PGO profilini tek bir profilde birleştirme
pgomgr kullanımı örnekleri.