Folder vs Models for storing Parts

Has anyone tested whether there is an improvement in performance in using a Folder over a Model to store parts in it when the Model specific functionality is not required?

2 Likes

I don’t really think that performance is effected by models or folders (correct me if I’m wrong). The only positive things I can see with a folder is that all individual parts can be selected and your Workspace is neatly packed up.

1 Like

I did a quick benchmark in moving a folder/model between ServerStorage and workspace 10000 times if anyone happens to stumble upon this thread in the future:

Folder test: 2.7572379112244
Model test: 3.0863332748413

There might be a small performance benefit for folders.

10 Likes

That’s quite surprising actually, I always use folders to differentiate assets in-game. I also do think that the performance benefit is literal milliseconds so it shouldn’t matter, but if you’re really passionate about performance then I guess it could benefit.

I like folders, alot we use them specific to storing multiple models, however I can say I’ve noticed a difference in the type of performance your looking for, I have made efficiency on the housekeeping end which helps me but as far as server or client performance I can’t really say… sorry if this doesn’t help.

I’ve run a quick test.
Result: moving models is much faster than moving folders. Folders are 70% slower, or models are 60% faster.

The test:
I prepared a Folder called “store” - contained 16 sub-folders with 36 Parts in each folder (default block parts, anchored)
Then I prepared the same as a model called “store” - contained 16 models with 36 Parts in each model (default block parts, anchored)

The script re-parented “store” from workspace to ReplicatedStorage and back 1000 times.

The empty loop (without any .Parent command) took 67 seconds (that’s the wait() time)
The script with Folder ran for 116 seconds (49 without the wait() time)
The script with Model ran for 96 seconds (29 without the wait() time)

Result (folder/model): 49/29=1,7 or 29/49=0,6
Somehow it was visible by my own eyes that moving models is faster.

The script:

wait(5)

local t=tick()
print (“started…”)
local i
for i=1, 1000 do
workspace.store.Parent=game.ReplicatedStorage
wait()
game.ReplicatedStorage.store.Parent=workspace
wait()
end
print (“finished in”, tick()-t)

Did you by any chance use the exact same part over and over qualifying them for being featherweight? (I think that’s what the feature was called)

I just retested and do get slower results for featherweight Parts in Folders but get better results for non-featherweight (different properties in terms of size, color, material).

1 Like

I used the default block Parts only (in all folders, all models), without changing any parameter, except Anchored, that I set to true.