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)
- Build Settings yang benar (1 jam, dampak besar): ONLY_ACTIVE_ARCH=YES, Compilation Mode=Incremental, tanpa dSYM di Debug.
- Anotasi tipe eksplisit (ongoing, dampak sedang): Perbaiki file yang lambat berdasarkan warning compiler.
- CI caching (2–4 jam, dampak besar): Potong 5–10 menit dari setiap CI run.
- Explicit Module Build (15 menit, dampak sedang): Aktifkan di Xcode 15+.
- Modularisasi (1–4 minggu, dampak sangat besar jangka panjang): Hanya setelah boundaries domain jelas.
- 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.