-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve performance of park loading #7567
Merged
AaronVanGeffen
merged 13 commits into
OpenRCT2:develop
from
IntelOrca:performance/park-loading
May 30, 2018
Merged
Improve performance of park loading #7567
AaronVanGeffen
merged 13 commits into
OpenRCT2:develop
from
IntelOrca:performance/park-loading
May 30, 2018
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7b129a9
to
db671a6
Compare
Wow, the speed-up is very noticeable on Linux for me, too. Nice work! |
@AaronVanGeffen Is that with debug builds? |
Yes, it is. |
- Change std::copy_n and std::fill_n back to std::memcpy and std::memset. They do not have the overhead of checks. - Change std::malloc to HeapAlloc as 16 MiB allocations are very slow due to it initialising all the memory to 0xCC.
8180cb6
to
281d917
Compare
janisozaur
added a commit
that referenced
this pull request
Jun 10, 2018
- Feature: [#1417] Allow saving track designs for flat rides. - Feature: [#1675] Auto-rotate shops to face footpaths. - Feature: [#3473] Add button in ride window's maintainance tab to refurbish the ride. - Feature: [#6510] Ability to select edges or a row of tiles by holding down Ctrl using the land tool. - Feature: [#7187] Option for early scenario completion. - Feature: [#7266] Make headless instances use an interactive terminal with access to the in-game console API. - Feature: [#7267] Leverage more historical data in Finances window. - Feature: [#7316] Cheat to allow freezing all staff - Feature: [#7332] Keyboard shortcuts for view path issues and cutaway view. - Feature: [#7348] Add large half loops to the Vertical Drop Roller Coaster. - Feature: [#7459] Allow opening and closing of parks that use no money. - Feature: [#7579] New horizontal +/- spinner widgets to make adjusting values easier. - Fix: [#2053] When clearance checks are disabled, a track piece ghost can remove non-ghost track pieces. - Fix: [#2611] Some objects show (undefined string) instead of a description in Korean. - Fix: [#3596] Saving parks, landscapes and tracks with a period in the filenames don't get their extension. - Fix: [#5210] Default system dialog not accessible from saving landscape window. - Fix: [#6134] Scenarios incorrectly categorised when using Polish version of RCT2. - Fix: [#6141] CSS50.dat is never loaded. - Fix: [#6647] Changelog window causes FPS drop. - Fix: [#6938] Banner do not correctly capitalise non-ASCII characters. - Fix: [#7176] Mechanics sometimes fall down from rides. - Fix: [#7303] Visual glitch with virtual floor near map edges. - Fix: [#7313] Loading an invalid path with openrct2 produces results different than expected. - Fix: [#7327] Abstract scenery and stations don't get fully See-Through when hiding them (original bug). - Fix: [#7331] Invention list in scenario editor crashes upon removing previously-enabled ride/stall entries. - Fix: [#7341] Staff may auto-spawn on guests walking outside of paths. - Fix: [#7354] Cut-away view does not draw tile elements that have been moved down on the list. - Fix: [#7358] Peeps and staff entering rides still have the slope speed penalty set. - Fix: [#7382] Opening the mini-map reverts the size of the land tool to 1x1, regardless of what was selected before. - Fix: [#7402] Edges of neigbouring footpaths stay connected after removing a path that's underneath a ride entrance. - Fix: [#7405] Rides can be covered by placing scenery underneath them. - Fix: [#7418] Staff walk off paths with a connection but no adjacent path. - Fix: [#7434] Diagonal ride segments cannot be deleted if they are isolated. - Fix: [#7436] Only the first 32 vehicles of a train can be painted. - Fix: [#7480] Graphs skip values of 0. - Fix: [#7505] Game crashes when trying to make path over map edge while having clearance checks disabled. - Fix: [#7528] In park entrance pricing tab, switching tabs happens on mouse-down instead of mouse-up - Fix: [#7544] Starting a headless server with no arguments causes the game to freeze. - Fix: [#7571] Hovering a ride design over scenery or tracks will give tons of money. - Improved: [#2989] Multiplayer window now changes title when tab changes. - Improved: [#5339] Change eyedropper icon to actual eyedropper and change cursor to crosshair. - Improved: [#5832] Resize tile inspector automatically when selecting a tile element. - Improved: [#6221] The scenario editor's invention list is now resizeable. - Improved: [#7069] The arbitrary ride type selection dropdown is now sorted orthographically, and has its spinners removed. - Improved: [#7302] Raising land near the map edge makes the affected area smaller instead of showing an 'off edge map' error. - Improved: [#7435] Object indexing now supports multi-threading. - Improved: [#7510] Add horizontal clipping to cut-away view options. - Improved: [#7531] "Save track design" dropdown now stays open. - Improved: [#7548] Ctrl-clicking with the tile inspector open now directly selects an element and its tile. - Improved: [#7555] Allow setting the Twitch API URL, allowing custom API servers. - Improved: [#7567] Improve the performance of loading parks and the title sequence. - Improved: [#7577] Allow fine-tuning the virtual floor style. - Improved: [#7608] The vehicle selection dropdown is now sorted orthographically. - Improved: [#7613] Resizing the staff window now resizes the name and action columns too. - Improved: [#7627] Allow scrolling up and down on spinners to change their values.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When the missing objects window was introduced, objects ended up being loaded twice. They were loaded first and then discard when checking if all objects could be loaded. They were then loaded again in the loading of the park.
Most of the time taken to load a park is reading the object files. In debug mode it is the decoding of the legacy object files (needed for images) that take the most time, the large
malloc
in particular.std::malloc
,std::copy_n
andstd::fill_n
have large overheads in MSVC debug builds. Changing them toHeapAlloc
,std::memcpy
andstd::memset
respectively greatly improves performance in debug.