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ı Optimize Etme bölümüne bakın.
Önerilen işaretler
İşaretler bazelrc
yapılandırması 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 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şimde bulunma hakkında bilgi için JSON Profili belgelerine bakın.
Android için kalıcı çalışanlar derleme işlemleri.
Android derleme işlemlerinin bir alt kümesi, kalıcı çalışanları destekler.
Bu işlemlerin anımsatıcıları:
- DexBuilder
- Javac
- Şekerli
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Çalışanların etkinleştirilmesi, bu araçların çağrılmasından JVM başlatma maliyetlerinde tasarruf sağlayarak daha iyi derleme performansı sağlayabilir. Ancak bu araçların devam ettirilmesi, sistemde artan bellek kullanımına neden olur.
Bu işlemlerde çalışanları etkinleştirmek için komut satırına --config=android_workers
ile bu 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 kalıcı çalışan sayısı: 4
. Her işlemin örnek sayısını 1
veya 2
ile sınırlandırarak iyileştirilmiş derleme performansını ölçtük. Ancak bu süre, Bazel'ın çalıştığı sisteme ve projenin oluşturulmaya bağlı olarak farklılık gösterebilir.
Bir işlemin örnek sayısını sınırlamak için ş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 karşılaştırıldığında daha iyi performansa sahip ve daha küçük APK'lar oluşturuyor. aapt2
özelliğini kullanmak için --android_aapt=aapt2
işaretini kullanın veya android_binary
ve android_local_test
alanlarındaki aapt_version
için aapt2
değerini ayarlayın.
SSD optimizasyonları
--experimental_multi_threaded_digest
işareti, SSD'lerde özet hesaplamasını optimize etmek için yararlıdır.