Section 4/221 menit
4. Mengukur Build Time
4. Mengukur Build Time
Sebelum optimasi, ukur dulu. Optimasi tanpa data adalah tebak-tebakan.
Build Timing Summary
Aktifkan timing summary di Xcode:
swift
# Tambahkan ke shell profile atau jalankan sekali per sesi
defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
Setelah build, Xcode menampilkan total waktu di activity area.
Per-File Compilation Time
swift
# Tambahkan OTHER_SWIFT_FLAGS di Build Settings (Debug only)
-Xfrontend -warn-long-function-bodies=100
-Xfrontend -warn-long-expression-type-checking=100
Nilai 100 artinya: warning jika satu fungsi atau expression butuh lebih dari 100ms untuk dikompilasi. Turunkan threshold untuk menemukan bottleneck spesifik.
Build Timeline di Xcode
Buka Report Navigator (Cmd+9) → pilih build terakhir → klik ikon clock di kanan atas. Xcode 14+ menampilkan waterfall timeline semua build tasks, memperlihatkan apa yang berjalan paralel dan apa yang blocking.
xcode-build-times
swift
# Install tool open-source untuk analisis lebih detail
brew install kiliankoe/formulae/xcode-build-times
# Jalankan setelah build
xcode-build-times generate
# Output: HTML report dengan breakdown per file
Script Pengukuran Otomatis
swift
#!/bin/bash
# Ukur build time dan simpan ke file log
# scripts/measure-build-time.sh
SCHEME="${1:-MyApp}"
DESTINATION="${2:-platform=iOS Simulator,name=iPhone 16}"
LOG_FILE="build-time-$(date +%Y%m%d-%H%M%S).log"
echo "Measuring clean build time for scheme: $SCHEME"
START=$(date +%s)
xcodebuild clean build \
-scheme "$SCHEME" \
-destination "$DESTINATION" \
-configuration Debug \
2>&1 | tee "$LOG_FILE" | grep -E "(error:|warning:|Build succeeded|Build FAILED)"
END=$(date +%s)
ELAPSED=$((END - START))
echo ""
echo "Build time: ${ELAPSED}s"
echo "Log saved to: $LOG_FILE"
# Simpan ke CSV untuk tracking regresi
echo "$(date +%Y-%m-%d),${SCHEME},${ELAPSED}" >> build-times.csv