Performance Tips Khas Luau
Penjelasan
Meski interpreter Luau sudah jauh lebih cepat dari Lua 5.1 standar, beberapa pola kode tetap lebih mahal dari yang lain: membuat tabel baru berulang di dalam loop yang jalan tiap frame, memanggil `FindFirstChild`/`WaitForChild` berulang untuk objek yang sama alih-alih menyimpan referensinya, dan koneksi event `RenderStepped`/`Heartbeat` yang menumpuk tanpa pernah diputus. Optimasi paling berdampak biasanya bukan micro-optimization sintaks, melainkan mengurangi jumlah operasi yang berjalan tiap frame (per `RunService.Heartbeat`/`RenderStepped`) — cache hasil pencarian objek, batasi frekuensi kalkulasi berat, dan hindari alokasi tabel baru di hot path (kode yang berjalan sangat sering).
Contoh Konsep
-- Kurang optimal: FindFirstChild dipanggil tiap frame
local RunService = game:GetService("RunService")
RunService.Heartbeat:Connect(function()
local bagian = workspace:FindFirstChild("Platform") -- mahal, diulang tiap frame
if bagian then
bagian.Transparency = 0.5
end
end)
-- Lebih optimal: cache referensi sekali di luar loop
local bagianCache = workspace:FindFirstChild("Platform")
RunService.Heartbeat:Connect(function()
if bagianCache then
bagianCache.Transparency = 0.5
end
end)
Praktikum
Perbaiki kode berikut supaya referensi Part "Musuh" di-cache sekali di luar koneksi Heartbeat, bukan dicari ulang tiap frame.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Gunakan Roblox Studio MicroProfiler untuk mengukur bagian kode mana yang benar-benar lambat sebelum melakukan optimasi — jangan menebak, karena bottleneck sering ada di tempat yang tidak terduga.