July 03 2023
By Rubén Torres Bonet
July 03, 2023
Still using native C# collections like List, Dictionary, HashSet?
Ok, that’s fine, I won’t judge you. In fact, I won’t tell you to stop using them, as they still have their place in game development.
But most of the time you’ll want to use the new goodies coming from this package called
com.unity.collections. You’ll be surprised to see how many collections you now have access to. Each one fitting a different use case you’ll find during development.
These collections are so specific, that they’ll give you substantial performance gains (10x is not unheard of) that you can use to level up your project in other areas, such as better graphics, more realistic AI and so on. They also incur in no GC allocations btw.
This is pure gold because some collections support multithreading. Hi job system. Hi burst compiler.
Here are some of the collections you can start using today:
A word of caution. These collections are unmanaged, so you need to be taking care of the allocation and disposal of your collections. Easy once you have done it a couple of times.
If you want to dive in deeper in high-performance collections so you can start using them efficiently as of today, I cover this topic pretty much in depth in the Unity Performance Taskforce, module “2023.05”. This module also includes examples of these collections together with the job system and burst compiler so you can cover pretty much every use case you’ll find in your career.
Here is the link to the collections documentation. It includes updated performance benchmarks that compare against the native C# collections for your information.
Have a look and make a call!
As of me, I’ll use high-performance collections in the ratio of approximately 8 out of 10 cases. And whenever I can’t, then I stick to the slower (yet more universal) standalone C# data structures.
If your studio could use some clarity going forward in your project, let’s have a chat.