Section 22/222 menit

16. Ringkasan & Decision Guide

16. Ringkasan & Decision Guide

Kondisi Rekomendasi
Build > 5 menit, belum pernah profiling Pasang -warn-long-function-bodies=100, jalankan build, lihat warning
Ada file yang compile > 2 detik Tambahkan anotasi tipe eksplisit, pecah expression kompleks
Clean build lambat, incremental cepat WMO di Debug mungkin aktif — pastikan Compilation Mode = Incremental
Project > 150 file, satu target Pertimbangkan modularisasi ke local SPM packages
CI build > 15 menit Tambahkan caching CocoaPods + SPM di GitHub Actions / CI system
CI rebuild semua pods setiap run Implementasi cache dengan key berbasis Podfile.lock hash
Team > 10 developer, build > 20 menit Pertimbangkan Bazel dengan remote caching atau Tuist
Menggunakan Xcode 15+ Aktifkan Explicit Module Build
Banyak AnyView di SwiftUI Ganti dengan @ViewBuilder dan some View
Project kecil < 50 file Tidak perlu optimasi khusus — default sudah OK

Prioritas Optimasi (Urutan ROI Terbaik)

  1. Build Settings yang benar (1 jam, dampak besar): ONLY_ACTIVE_ARCH=YES, Compilation Mode=Incremental, tanpa dSYM di Debug.
  2. Anotasi tipe eksplisit (ongoing, dampak sedang): Perbaiki file yang lambat berdasarkan warning compiler.
  3. CI caching (2–4 jam, dampak besar): Potong 5–10 menit dari setiap CI run.
  4. Explicit Module Build (15 menit, dampak sedang): Aktifkan di Xcode 15+.
  5. Modularisasi (1–4 minggu, dampak sangat besar jangka panjang): Hanya setelah boundaries domain jelas.
  6. Remote build cache / Bazel (berminggu-minggu, dampak besar untuk team besar): Hanya jika team > 10 orang dan build > 20 menit.

Mulai dari yang paling mudah: perbaiki Build Settings hari ini, pasang CI caching minggu ini, pertimbangkan modularisasi setelah ada data yang menunjukkan bottleneck ada di sana. Jangan loncat langsung ke Bazel sebelum low-hanging fruit dipetik.