Bu sayfada, özellikle Android uygulamaları için derleme performansını optimize etme hakkında bilgiler bulunmaktadır. Bazel ile genel derleme performansı optimizasyonu için Performansı Optimizasyon başlıklı makaleyi inceleyin.
Önerilen işaretler
İşaretler bazelrc
yapılandırma söz diziminde olduğundan doğrudan bir bazelrc
dosyasına yapıştırılabilir ve komut satırında --config=<configuration_name>
ile çağrılabilir.
Performans profilleme
Bazel, varsayılan olarak JSON izleme profilini Bazel'in çıkış tabanında command.profile.gz
adlı bir dosyaya yazar.
Profili okuma ve profille etkileşime geçme hakkında bilgi edinmek için JSON Profili belgelerine bakın.
Android derleme işlemleri için kalıcı çalışanlar.
Android derleme işlemlerinin bir alt kümesi kalıcı çalışanlar için destek sunar.
Bu işlemlerin kısaltmaları şunlardır:
- DexBuilder
- Javac
- Şeker ayrıştırma
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
İşleyicileri etkinleştirmek, bu araçların her birinin çağrılmasıyla ilgili JVM başlatma maliyetlerinden tasarruf ederek daha iyi derleme performansı sağlayabilir ancak bu araçlar kalıcı hale getirildiğinde sistemdeki bellek kullanımı artar.
İşçileri bu işlemler için etkinleştirmek üzere komut satırında --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 kalıcı çalışan sayısı varsayılan olarak 4
'tür. Her işlem için örnek sayısını 1
veya 2
ile sınırlayarak geliştirilmiş derleme performansını ölçtük. Ancak bu durum, Bazel'in çalıştığı sisteme ve derlenen projeye bağlı olarak değişiklik gösterebilir.
Bir işlemin örnek sayısını sınırlamak için 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
'a kıyasla daha iyi performansa sahiptir ve daha küçük APK'lar oluşturur. aapt2
kullanmak için --android_aapt=aapt2
işaretini kullanın veya android_binary
ile android_local_test
'te aapt_version
üzerinde aapt2
'yi ayarlayın.
SSD optimizasyonları
--experimental_multi_threaded_digest
işareti, SSD'lerde özet hesaplamasını optimize etmek için kullanışlıdır.