Study
Luau

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.

Editor Latihan

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.