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.
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ı desteklemektedir.
Bu işlemlerin kısaltmaları şunlardır:
- DexBuilder
- Javac
- Tatlı
- 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ş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
'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 hesaplamayı optimize etmek için kullanışlıdır.