Most performant way to loop multiple of same task?

I’m seeking the most optimal way of handling multiple of the same events. I’m making a tycoon and need every dropper I buy to produce drops without being extremely off by the set wait or to lag the game as more & more droppers are bought.

I have a ChildAdded to check whenever a dropper is bought(moved into their tycoon) & that same script controls all droppers.
Couple of things I’ve tried; I have tried to have an attribute in workspace, have 1 single loop update that attribute & use GetAttributeChangedSignal on droppers, this showed to be extremely inefficient, but I didn’t expect much either, just experimenting on different ways. I have tried to simply run while true loops. & now I’m trying RunServer.Heartbeat.

I have no idea how to check what is more performant & I wonder if anyone else have an idea of what could be most performant or how I check that myself.

What about a bindable event loop?
Just like

local Event = Instance.new("BindableEvent")
local BreakLoop = false
Event.Event:Connect(function()
  --do stuff
  if not BreakLoop then
        Event:Fire() --If the variable ever enables, it'll stop the dropper thingy majig.
  end
end

Event:Fire() --starts loop