Performance optimizing suggestions?

Hello, hello, good [insert time of day here] everybody!

So I have… not a problem, but a little inconvenience:
let’s pretend I have a game with a lot of objects, and they have some properties I want to track all the time every, like RunService:Heartbeat() time, on the server side, of course.

And I am curious, what would be better in the way of performance - having little scripts clones into the objects as they are created, which contains a code to track the properties change,
or
having only one big code which loops through all the objects tracking all the needed properties

note: all the game objects have a related metatable which, actually, stores all the properties

I guess it’s probably the second variant, but cause I got some lag with it I was thinking for solutions, and I am asking just to be sure.
If you have any other suggestions, how to lower the lag, I’d be grateful to see them, if you wish.

If you want to listen to property changes, perhaps :GetPropertyChangedSignal() would be a better idea

This plus using CollectionService to tag the objects and track them