
Originally Posted by
martinsustek
There are different PC configurations, and if performance is not enough, some of them might be CPU-bound and some GPU-bound, also depending on quality settings. Offloading things from the main tread should help in CPU-bound cases. But as I've seen it, most of the time spent on CPU is rendering, physics and some internal unity processes.
We are using Unity 5.4 currently. I am not sure if Unity 2017 is any better now, but last time we switched to 2017 we expected free performance benefit, but instead it was overall approx. 10 FPS worse on our testing machines and was forced to revert our project back. Maybe switching should be conducted with some rework of our code to gain a better performance. But we did not have a time for this.
Using multithreading is possible in Unity/C#, but not with Unity API calls, as stated in articles you've mentioned. We use asynchronous accesses to database, but switching between main and background thread costs a frame, so sometime it's better to do things in main thread instead of: getting values in main thread, waiting for background thread, computing something, waiting for main thread, using computed values in main thread. Also using asynchronous functions in interactive code is a little bit problematic. For example you call function to digg into terrain and never know, if modified terrain gets back in next frame or 5 frames later.