Bu sayfada, özellikle Android uygulamaları için derleme performansını optimize etme hakkında bilgiler yer almaktadır. Bazel ile genel derleme performansı optimizasyonu için Performansı Optimize Etme bölümüne bakın.
Önerilen işaretler
İşaretler, bazelrc
yapılandırma söz diziminde olduğundan, doğrudan bazelrc
dosyasına yapıştırılabilir ve komut satırında --config=<configuration_name>
ile çağrılabilir.
Profil performansı
Bazel, varsayılan olarak JSON izleme profili yazarak Bazel'ın çıkış tabanında command.profile.gz
adlı bir dosyaya yazar.
Profili okuma ve profille etkileşim kurma hakkında bilgi edinmek için JSON Profili dokümanlarına göz atın.
Android derleme işlemleri için kalıcı çalışanlar.
Android derleme işlemlerinin bir alt kümesi kalıcı çalışanları destekler.
Bu işlemlerdeki hatıralar:
- DexBuilder Oluşturucu
- Java Dili
- Desugar
- AaptPackage
- AndroidKaynakParser
- AndroidKaynak Doğrulayıcı
- AndroidKaynakCompiler
- RSınıfı Oluşturma Aracı
- AndroidKaynak Bağlantısı
- AndroidAapt2
- AndroidÖğe Birleştirme
- AndroidKaynak Birleştirme
- AndroidBirleştirilmişKaynakBirleştirici
Çalışanların desteklenmesi, bu araçların her birinin çağrılmasıyla elde edilen JVM başlangıç maliyetlerinden tasarruf ederek ve bunları devam ettirerek sistemde bellek kullanımının artmasını sağlayarak performansı artırabilir.
Çalışanları bu işlemler için etkinleştirmek üzere komut satırına --config=android_workers
ile aşağıdaki işaretleri uygulayın:
build:android_workers --strategy=DexBuilder=worker
build:android_workers --strategy=Javac=worker
build:android_workers --strategy=Desugar=worker
# A wrapper flag for these resource processing actions:
# - AndroidResourceParser
# - AndroidResourceValidator
# - AndroidResourceCompiler
# - RClassGenerator
# - AndroidResourceLink
# - AndroidAapt2
# - AndroidAssetMerger
# - AndroidResourceMerger
# - AndroidCompiledResourceMerger
build:android_workers --persistent_android_resource_processor
İşlem başına oluşturulan varsayılan çalışan sayısı varsayılan olarak 4
şeklindedir. Her bir işlemin örnek sayısını 1
veya 2
ile sınırlandırarak geliştirilmiş derleme performansını ölçtük. Ancak bu değer, Bazel'ın çalıştığı sisteme ve oluşturulan projeye göre değişiklik gösterebilir.
Bir işlem için örnek sayısını sınırlamak üzere aşağıdaki işaretleri uygulayın:
build:android_workers --worker_max_instances=DexBuilder=2
build:android_workers --worker_max_instances=Javac=2
build:android_workers --worker_max_instances=Desugar=2
build:android_workers --worker_max_instances=AaptPackage=2
# .. and so on for each action you're interested in.
AAPT2'yi kullanma
aapt2
, aapt
ile kıyaslandığında performansı iyileştirdi ve daha küçük APK'lar oluşturdu. aapt2
özelliğini kullanmak için --android_aapt=aapt2
işaretini kullanın veya aapt_version
üzerinde android_binary
ve android_local_test
için aapt2
ayarlayın.
SSD optimizasyonları
--experimental_multi_threaded_digest
işareti, SSD'lerdeki özet hesaplamalarını optimize etmek için yararlıdır.