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 başlıklı makaleye bakın.
Önerilen işaretler
Bayraklar bazelrc
yapılandırma söz dizimindedir. Bu nedenle, 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'ın çıkış tabanında command.profile.gz
adlı bir dosyaya 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ümesi kalıcı çalışanları destekler.
Bu işlemlerin anımsatıcıları şunlardır:
- DexBuilder
- Javac
- Desugar
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Çalışanların etkinleştirilmesi, bu araçların her birinin çağrılmasından kaynaklanan JVM başlatma maliyetlerinden tasarruf sağlayarak daha iyi bir derleme performansı elde edilmesini sağlayabilir ancak bu araçların kalıcı hale getirilmesi sistemdeki bellek kullanımının artmasına neden olur.
Bu işlemler için çalışanları etkinleştirmek üzere komut satırında aşağıdaki işaretleri --config=android_workers
ile birlikte 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ışanların varsayılan sayısı 4
'dır. Her işlem için örnek sayısını 1
veya 2
ile sınırlayarak derleme performansını iyileştirdiğimizi ölçtük. Ancak bu, Bazel'in üzerinde çalıştığı sisteme ve oluşturulan projeye bağlı olarak değişebilir.
Bir işlem için örnek sayısını sınırlamak üzere ş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
'e kıyasla daha iyi performans sunar ve daha küçük APK'lar oluşturur. aapt2
özelliğini kullanmak için --android_aapt=aapt2
işaretini kullanın veya android_binary
ve android_local_test
üzerinde aapt_version
için aapt2
değerini ayarlayın.
SSD optimizasyonları
--experimental_multi_threaded_digest
işareti, özet hesaplamasını SSD'lerde optimize etmek için kullanışlıdır.