Organized Values VS. Dictionaries

I’ve wanted to know if there’s a contrast between the two, I know unmistakably one’s a table and the other is an instance, but is there an actual difference between using the two?

I use tables as much as I can it’s just I want to know if there are any downsides to using values rather than tables.

(Also to my knowledge there is no table equivalent to .Changed)

You have to type the path to the value.

But with table, you can just simply do table[(index)], instead of doing game.ReplicatedStorage.NumberValue.Value

well, over values I would 90% of the time prefer tables. Especially with data since you can just call datastore:SetAsync(player.UserId, table) to save data, instead of having to loop through every instance, setting the values, etc.

The only reason I can think of is the issue with storing or saving data with a lot of value instances.

This is true, but there are ways to make your own with meta tables.

Tables/dictionaries are normally superior, easier to store and access, and definitely more performance friendly (1 or 2 values won’t be a problem, but when you have 1000 values, 1000 entries in table is much more performant)

You can also use Attributes instead of Values or Tables/dictionaries, which are like best of both worlds. Attributes aren’t instances so they’re more performance friendly, and have events like .AttributeChanged() and :GetAttributeChangedSignal(), and you can use :GetAttributes() to return a table.

Overall, Values are probably the worst, Attributes are a best of both worlds, and Tables/dictionaries are the most performant.

It really just depends on what you are using the data for.
If you use tables, you really don’t need to check a ‘changed’, you just need to put your table in a
module, and create a function for setting the data, have this function do the same thing that .Changed would have done.