Ana içeriğe geç
Programlama

Profil güdümlü optimizasyon ikili dosya yapısını kökten değiştiriyor

Öne çıkanlar

  • PGO, iki aşamalı derleme süreciyle kontrol akış grafiği üzerinde yol düzeyinde istatistik topluyor.
  • Sık çalışmayan kod parçaları ayrı bölümlere taşınarak işlemci önbellek yerelliği korunuyor.
  • mysqld gibi 100 megabaytı aşan ikili dosyalarda fonksiyon sıralaması performans kazancını doğrudan belirliyor.

Profil Güdümlü Optimizasyon (PGO), derleyicilerin çalışma zamanı verilerini kullanarak ikili dosyaları yeniden şekillendirmesini sağlıyor. İki aşamalı bir derleme süreci içeren yöntem, ilk aşamada kodun her bir akış çizgisine sayaçlar ekleyerek ölçüm alıyor. İkinci aşamada ise toplanan profil verileri doğrultusunda satır içi genişletme, dal düzeni ve fonksiyon yerleşimi gibi kritik optimizasyon kararları veriliyor.

PGO mekanizması, fonksiyon çağırma sayılarının ötesine geçerek kontrol akış grafiğindeki her yol için ayrıntılı veri topluyor. Elde edilen istatistiklerle derleyici, nadiren çalışan hata yönetim kodlarını ayrı bellek alanlarına taşıyor ve sık kullanılan yolları düz bir akışa sokuyor. Ayrıca fonksiyonların sıcak ve soğuk bölümleri fiziksel olarak ayrılıyor; sık çalışan bloklar işlemci önbelleğini daha verimli kullanacak şekilde sıkıca paketleniyor.

Bağlantı zamanı optimizasyonlarıyla birlikte çalışan PGO, birbirini sık çağıran fonksiyonları bellekte yan yana yerleştirerek mysqld gibi büyük ikili dosyalarda önbellek performansını artırıyor. Dolaylı fonksiyon çağrıları doğrudan çağrılara dönüştürülüyor ve nadiren girilen bölümler kod boyutunu küçültecek şekilde derleniyor. Sistemin verimli işlemesi için test verilerinin üretim verileriyle birebir aynı olması gerekmiyor; yalnızca kontrol akış biçiminin benzerliği yeterli oluyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.