Bu sayfada, özellikle Android uygulamaları için derleme performansını optimize etmeyle ilgili bilgiler bulunmaktadı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 dizimindedir, böylece doğrudan bir bazelrc
dosyasına yapıştırılabilir ve komut satırında --config=<configuration_name>
ile çağrılabilir.
Profil oluşturma performansı
Bazel, varsayılan olarak Bazel'in çıkış tabanındaki command.profile.gz
adlı dosyaya bir JSON izleme profili yazar.
Profili okuma ve profille etkileşim kurma hakkında bilgi edinmek için JSON Profili dokümanlarına bakın.
Android derleme işlemleri için kalıcı çalışanlar.
Android derleme işlemlerinin bir alt kümesinde kalıcı çalışanları desteklemektedir.
Bu işlemlerin anımsatıcıları:
- DexBuilder
- Java
- Tatlı
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Çalışanların etkinleştirilmesi, bu araçların her birini çağırarak JVM başlatma maliyetlerinden tasarruf ederek daha iyi derleme performansı sağlayabilir. Ancak bu araçların devam ettirilmesi, sistemdeki bellek kullanımının artmasını sağlar.
Çalışanları bu işlemlerde etkinleştirmek için komut satırında bu işaretleri --config=android_workers
ile 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 kalıcı çalışan sayısı: 4
. Her işlem için örnek sayısını 1
veya 2
olarak sınırlayarak iyileştirilmiş derleme performansını ölçtük. Ancak bu, Bazel'in üzerinde çalıştığı sisteme ve projenin oluşturulduğuna bağlı olarak değişebilir.
Bir işlem için örnek sayısını sınırlamak amacıyla şu 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 ayrıca daha küçük APK'lar oluşturdu. aapt2
özelliğini kullanmak için --android_aapt=aapt2
işaretini kullanın veya android_binary
ve android_local_test
üzerinde aapt_version
üzerinde aapt2
değerini ayarlayın.
SSD optimizasyonları
--experimental_multi_threaded_digest
işareti, SSD'lerde özet hesaplamasını optimize etmek için kullanışlıdır.