Yineleme Hızını Optimize Edin

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bu sayfada, Bazel çalıştırırken Bazel'in derleme performansının nasıl optimize edileceği açıklanmaktadır tekrar tekrar.

Bazel'in Çalışma Zamanı Durumu

Bazel çağrısı, birbiriyle etkileşimde bulunan birkaç parçayı kapsar.

  • bazel komut satırı arayüzü (KSA), kullanıcılara yönelik kullanıcı arabirimi aracıdır ve kullanıcıdan komutlar alır.

  • CLI aracı bir Bazel sunucusu başlatır her ayrı çıktı tabanı için kullanın. Bazel sunucusu genellikle kalıcıdır ancak bir süre boşta kaldığında kapanır kaynakları boşa harcamamaktır.

  • Bazel sunucusu, belirli bir komut için yükleme ve analiz adımlarını gerçekleştirir (build, run, cquery vb.) içerir ve burada gerekli parçaları oluşturur hakkında genel bilgi verir. Ortaya çıkan veri yapıları, analiz önbelleğinin bir parçası olarak Bazel sunucusunu devre dışı bırakın.

  • Bazel sunucusu da işlemi gerçekleştirebilir veya uzaktan yürütme işlemine yönelik işlem kapalıdır. Sonuçları işlem yürütmeleri de işlem önbelleğinde (veya yürütme önbelleği (yerel veya uzak olabilir ve paylaşılabilir) arasında).

  • Bazel çağrısının sonucu, çıkış ağacında sunulur.

Bazel'i İterasyonlu Olarak Çalıştırma

Tipik bir geliştirici iş akışında bir kod parçası oluşturmak (veya çalıştırmak) yaygındır. ve çoğu zaman çok yüksek sıklıkta (ör. bir derlemeyi belirli bir hatası veya başarısız testi araştırın). Böyle bir durumda, yinelenen bazel çağrılarının, temel, tekrarlanan işlem (ör. derleyici çağırma veya test yürütme).

Bunu göz önünde bulundurarak Bazel'in çalışma zamanı durumunu tekrar inceleyelim:

Analiz önbelleği, kritik bir veri parçasıdır. Önemli bir zaman dilimi yalnızca soğuk çalıştırmanın yükleme ve analiz aşamalarında harcanması (yani (Bazel sunucusu başlatıldıktan veya analiz önbelleği silindikten sonra) kullanılabilir. Tek ve başarılı bir soğuk derleme için (ör. üretim sürümü için) bu maliyet her zaman aynı hedefi kurmak için gereklidir. Ancak bu, amorti edilecek ve her çağrıda tekrarlanmayacak.

Analiz önbelleği nispeten değişkendir. Öncelikle bu sürecin bir parçası. sunucuyu kaybetmek, önbelleği kaybetmez. Ancak önbellek, çok kolay bir şekilde geçersiz kılınır: Örneğin, birçok bazel komut satırı işareti önbelleğin silinmesine neden olur. Bunun nedeni, birçok işaretin derlemeyi etkilemesidir grafik (ör. yapılandırılabilir özellikler). Bazı kullanıcılar işaretle aynı zamanda Bazel sunucusunun yeniden başlatılmasına da (ör. başlangıç seçeneklerine göz atın).

İyi bir yürütme önbelleği, derleme performansı için de değerlidir. Yürütme önbellek yerel olarak saklanabilir disk üzerinde veya uzaktan. Önbellek, kullanıcılar arasında paylaşılabilir. gerçekten de geliştiriciler arasında.

Analiz önbelleğini silmekten kaçının

Analiz önbelleği silindiyse veya sunucu yeniden başlatıldı. Yinelemeli kullanım sırasında aşağıdakilerden birinden kaçınılmalıdır:

  • İterasyonların ortasında bazel işaretlerini değiştirmeye dikkat edin. iş akışını takip edin. Örneğin, bir bazel build -c opt ile bazel cquery karıştırılıyor her komutun, diğerinin analiz önbelleğini silmesine neden olur. Genel olarak belirli bir iş akışı süresince sabit bir işaret kümesi kullanmaya çalışın.

  • Bazel sunucusu kaybedildiğinde analiz önbelleği de kaybedilir. Bazel sunucusunda yapılandırılabilir boşta ve daha sonra kapanır. Bu süreyi şurada yapılandırabilirsiniz: bazelrc dosyasını eklemeniz gerekir. Sunucu, başlatma sırasında da yeniden başlatılır Bu nedenle, mümkünse bu işaretleri değiştirmekten kaçının.

  • Bastığınızda Bazel sunucusunun kapatılacağına dikkat edin. Bazel çalışırken Ctrl-C'ye arka arkaya basın. Zamandan tasarruf etmeye çalışmak artık gerekli olmayan çalışan bir derlemeyi kesintiye uğratarak ancak Geçerli çağrının kontrollü sonlandırılmasını istemek için bir kez Ctrl-C tuşlarına basın.

  • Aynı çalışma alanından birden fazla işaret grubu kullanmak isterseniz --output_base ile geçişli, birden fazla farklı çıkış tabanı kullanır. tıklayın. Her çıkış tabanının kendi Bazel sunucusu olur.