Mengoptimalkan performa aplikasi NativePHP: startup/boot time, memori runtime PHP, opcache mobile config, baseline profile Android, render performa native components v4, serta profiling dengan Instruments (iOS) dan Android Profiler.

Setelah di episode 22 kita mengamankan data di perangkat, pada episode ini kita optimalkan performa aplikasi. Startup time yang lambat, memory leak, dan render yang stuttering adalah musuh UX mobile. User mengharapkan aplikasi native terasa cepat dan responsif — dan dengan tuning yang tepat, NativePHP bisa mencapai standar tersebut.
Performance tuning di NativePHP mencakup tiga lapisan: PHP runtime, native shell, dan komponen UI.
Startup time adalah waktu dari tap ikon aplikasi sampai UI siap digunakan. Di NativePHP, boot time terdiri dari:
Total target: di bawah 2 detik untuk cold start.
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register(): void
{
// Lazy load service yang tidak dibutuhkan saat boot
$this->app->singleton(SomeHeavyService::class, function ($app) {
return new SomeHeavyService();
});
}
}php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cacheCaching configuration mengurangi waktu bootstrap karena Laravel tidak perlu membaca dan parse file config/route/view setiap boot.
PHP opcache menyimpan bytecode yang sudah dikompilasi — menghindari parsing ulang PHP source setiap execution. Di mobile, opcache bisa dikonfigurasi untuk efisiensi:
<?php
// php.ini untuk NativePHP production
opcache.enable=1
opcache.memory_consumption=64 // 64MB (hemat untuk mobile)
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.validate_timestamps=0 // Production: jangan check timestamps
opcache.revalidate_freq=0
opcache.save_comments=0validate_timestamps=0 sangat penting di mobile — opcache tidak akan mengecek apakah file berubah, yang menghemat I/O dan CPU.
Android Baseline Profile mengoptimalkan compilation aplikasi — kode yang sering dipakai di-compile ke native code oleh ART runtime:
// Jalankan di Android Studio Profiler
// Record baseline profile selama startup dan navigasi utama
// Output: baseline-prof.txtandroid {
buildTypes {
release {
// Apply baseline profile
profileable {
enabled = true
}
}
}
}Baseline profile mengurangi cold start time di Android sebesar 20-40% karena kode kritis sudah di-compile sebelum user menjalankannya.
Di v4 SuperNative, rendering SwiftUI/Jetpack Compose jauh lebih cepat dari WebView. Tapi ada beberapa optimasi:
<x-native.lazy-list :items="$largeDataset" :buffer-size="20">
<x-slot name="item" let="$item">
<x-native.list-item :title="$item->title" />
</x-slot>
</x-native.lazy-list>Lazy list hanya render item yang terlihat di layar — hemat memori dan CPU untuk dataset besar.
<x-native.image
src="{{ $imageUrl }}"
:cache="true"
:placeholder="true"
placeholder-color="#e5e7eb"
/>Image caching menghindari download ulang gambar yang sama, dan placeholder menampilkan warna solid sementara gambar dimuat.
# Build dengan debug symbols
php artisan native:build ios --debug
# Buka Instruments dari Xcode
# Product → Profile (Cmd+I)Fokus di:
# Buka proyek di Android Studio
# Run → Profile 'app'
# Android Profiler terbuka dengan CPU, Memory, Network, EnergyFokus di:
| Metric | Target | Tool |
|---|---|---|
| Cold start | < 2 detik | Instruments / Profiler |
| Memory usage | < 200MB | Memory Profiler |
| FPS | 60 fps stabil | GPU Profiler |
| Battery drain | < 5% per jam active use | Energy Profiler |
| Network latency | < 200ms average | Network Profiler |
Tip
Ukur performa di perangkat terendah yang didukung (iPhone SE untuk iOS, device low-end untuk Android). Jika performa baik di device rendah, device tinggi akan lebih cepat.
Inti yang harus dibawa pulang:
validate_timestamps=0 dan memory yang terbatas hemat I/O.Di episode 24 selanjutnya, kita akan membahas Monitoring & Error Tracking — crash reporting native, error tracking PHP, log shipping dari device, release health, dan alerting. Sampai jumpa di episode 24!