Fix RV pathfinder performance regression caused by map size increase.

The YAPF road vehicle pathfinder previously limited the path length
to the map size (previously 2048).
The extra large maps path increases this to 1M, nearly 3 orders of
magnitude, and this can result in a major performance penalty due
to excessively long pathfinder paths.
Instead limit the RV pathfinder length to a hard-coded 2048.
This commit is contained in:
Jonathan G Rennison
2015-09-18 21:54:17 +01:00
parent 421b9034e2
commit 736bfcf7eb

View File

@@ -16,6 +16,14 @@
#include "../../safeguards.h"
/**
* This used to be MAX_MAP_SIZE, but is now its own constant.
* This is due to the addition of the extra-large maps patch,
* which increases MAX_MAP_SIZE by several orders of magnitude.
* This is no longer a sensible value for pathfinding as it
* leads to major performace issues if a path is not found.
*/
const uint MAX_RV_PF_TILES = 1 << 11;
template <class Types>
class CYapfCostRoadT
@@ -152,7 +160,7 @@ public:
/* move to the next tile */
tile = F.m_new_tile;
trackdir = new_td;
if (tiles > MAX_MAP_SIZE) break;
if (tiles > MAX_RV_PF_TILES) break;
}
/* save end of segment back to the node */