Skip to content

Conversation

@IntelOrca
Copy link

@IntelOrca IntelOrca commented Apr 8, 2024

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.

@czastack
Copy link
Owner

czastack commented Apr 8, 2024

Can you provide your game file? I would do some test.

@IntelOrca
Copy link
Author

IntelOrca commented Apr 8, 2024

I can't remember which file was one of the worst offenders. I'll will try and find it again with some example code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants