Open niekschoemaker opened 8 months ago
And I know, the commits are large, that's because this started as me just screwing around in the code base a bit, but ended up being quite a massive undertaking in the end, which in my opinion is good enough quality to deserve a pull request.
Added a ton more updates, performance should be even better now, and more reliable.
Also updated it further to .NET 8 (since that has been released in the meantime)
Some optimizations aren't the neatest they can be, but still working on that, so still improving and refactoring the code as I go.
Ehh yeah, this is a pretty big one.
Been working on this for a while for past few weeks, managed to get performance quick, like real quick compared to original version.
And decided to upgrade the whole code base to .NET 6 (this would be up for debate, but in my opinion this is a great step for the longevity of the project as a whole and adds a lot of modern feature)
I also added unit testing (since I was doing a lot of changes having something to hold my hand and ensure I didn't break things was necessary) for some components and will probably continue to add some more tests during the weeks.
Changes in short:
the main thing I did to get the performance improvements was adding spans to avoid unecessary memory allocations and adding multi threading, these two together made it quite a lot quicker as there's not that many GC pauses anymore (from around 50%+ spend in GC to around 10%)
I don't really expect this to be accepted instantly, so please take your time to look it through as it contains a lot of changes, but I myself have been running it for a while and it appears to work without issues (mostly use it for models,textures and meta files from explorer en project form)