It depends entirely on what you mean by ‘performance’…
In terms of what is faster to load, lists have always been, and still are, faster to load than doing a search for the same things, and cost less in WU - up to a point…
I ran some extensive tests on this early last year (after WUs were introduced), and loading a list of 600 things was always faster (and less costly in WU) than doing a search for the same 600 things… whereas loading a list of 2000 things was slower than doing a search…
I never established the exact point where it changes from one to the other, but it must be somewhere between those numbers (although it’s probably far less to do with the number of things, and much more to do with the size of the data, so in that respect numbers like those are meaningless on their own).
Although the actual perceived difference in speed is probably negligible, the difference in WU cost can be significant.
But that’s purely in terms of loading the data to the page… there are way more things to consider (both from performance/WU perspective, and other database/functionality aspects, than just that).
You have to look at the bigger, overall picture of your app, and not just one specific page or RG to establish what is truly more efficient.
So, as always, the exact answer will depend entirely on your specific use case, how and where you’re loading the data, and the amount and size of the data.
That said, I would generally advise against using lists whenever:
-
you know there the list will contain more than 10 things (some will say 30, others 100, but in any case, you know there will be more than a small number of things)
-
you don’t know how many things the list will contain (even if in most cases it might be a small number, if it’s possible for the list to contain hundreds or thousands of things - i.e. you’re not limiting the number of things which can be added to the lists)
There are still exceptions to the above - where storing several hundred things on a list field can be a better option, in both load speed and WU cost terms, (and there can be cases where using lists of texts, rather than things, can offer a good compromise between performance and WU cost), but generally I’d stick to the above rule.
For your specific use-case, where there is an indeterminate number of completed tasks (plus, you may well need to store additional information about the completed tasks), creating separate database objects is definitely the way I would advise.