Profiling Your Scripts
Profiling means measuring where your script actually spends its time, instead of guessing. It is how you find the one slow function eating your frame budget rather than optimising code that was never the problem.
Get a free executor
You need an executor to run any Roblox script. Grab one free.
Why profile before optimising
The number-one mistake in performance work is optimising the wrong thing. Code that looks slow often is not the bottleneck. Profiling points you at the real hotspot so your effort actually moves the numbers.
Measure, change one thing, measure again. Performance work without measurement is just superstition.
The MicroProfiler
Roblox's built-in MicroProfiler (Ctrl+F6, or Ctrl+Shift+F6 to pause) shows a frame-by-frame breakdown of where time goes. Spikes in the timeline are the frames to investigate, and the labelled bars tell you which systems are responsible.
It takes a little practice to read, but it is the most direct view of what is making a frame expensive.
Simple timing
For a quick check you do not need the full profiler — wrap a suspect block with os.clock() before and after and print the difference. That tells you in milliseconds how long a function takes, which is often enough to confirm or clear a suspicion.
Pair this with understanding performance metrics so you know what the timing numbers should be.
Then fix it
Once profiling names the culprit, head to optimizing script efficiency and reducing script lag for the actual fixes. Re-profile afterwards to confirm the change helped.