I don't think this should be merged. Rather I just wanted to make aware, a very inefficient part of the code, that caused saving a file to take a very long time, if many new game objects were added.
For context, I was programatically taking a file with many enemy spawns and duplicating them around 5 times and saving the file.
This caused an o(n²) search to occur with thousands of calls to IndexOf in FixInstanceIndex.
As a quick work around, I swapped the List with a new class that wraps a list but also keeps a dictionary mapping the instances to their index in the list. This changed saving every area file from 30 second process down to near instant.
Ideally someone with better knowledge of the code should optimise the algorithm here so that it isn't doing so many searches through list which can have 300K items.
I don't think this should be merged. Rather I just wanted to make aware, a very inefficient part of the code, that caused saving a file to take a very long time, if many new game objects were added.
For context, I was programatically taking a file with many enemy spawns and duplicating them around 5 times and saving the file. This caused an o(n²) search to occur with thousands of calls to
IndexOf
inFixInstanceIndex
.As a quick work around, I swapped the List with a new class that wraps a list but also keeps a dictionary mapping the instances to their index in the list. This changed saving every area file from 30 second process down to near instant.
Ideally someone with better knowledge of the code should optimise the algorithm here so that it isn't doing so many searches through list which can have 300K items.