Commit Graph

37 Commits (bb576312cc757287062480b078764b0a2721af9a)

Author SHA1 Message Date
Jonathan G Rennison c50ee4efec Merge branch 'master' into jgrpp
# Conflicts:
#	src/linkgraph/mcf.cpp
5 years ago
Jonathan G Rennison 6e7117e04c Codechange: [Linkgraph] Skip MCF source node Dijkstra when all demand satisfied
MCF Dijkstra iterations are executed for all source nodes in a round-robin order.
Source nodes typically require different numbers of MCF Dijkstra iterations
to satisfy all of their demand.
This change is to avoid performing MCF Dijkstra iterations on source nodes which
have already been fully satisfied.
5 years ago
Jonathan G Rennison 3e8b091913 Linkgraph: MCF: Skip source node Dijkstra when all demand satisfied 5 years ago
Jonathan G Rennison 4438413f48 Linkgraph: Replace RB-tree with B-tree in MCF Dijkstra 5 years ago
Jonathan G Rennison 0246d59c8d FlowStat: Replace btree_map with flat map which is inlined in small case
Inline storage for size <= 2
Size = 1 is ~90%
Size = 2 is ~9%
Size >=3 is ~1% and gets a separate allocation
5 years ago
Jonathan G Rennison 90550d9642 FlowStatMap: Replace RB-tree with btree-indexed vector 5 years ago
Jonathan G Rennison 674732cd68 Merge: Codechange: Use null pointer literal instead of the NULL macro 5 years ago
Henry Wilson 7c8e7c6b6e Codechange: Use null pointer literal instead of the NULL macro 5 years ago
Jonathan G Rennison e735c1a51a Merge branch 'master' into jgrpp
# Conflicts:
#	src/aircraft_cmd.cpp
#	src/autoreplace_cmd.cpp
#	src/pathfinder/follow_track.hpp
#	src/pathfinder/yapf/yapf_rail.cpp
#	src/saveload/afterload.cpp
#	src/saveload/saveload.cpp
#	src/script/api/ai/ai_station.hpp.sq
#	src/script/api/game/game_station.hpp.sq
#	src/script/api/script_station.hpp
#	src/track_func.h
#	src/vehicle_base.h
6 years ago
Charles Pigott f5b1115039 Doc: Lots and lots of doxymentation fixes 6 years ago
Jonathan G Rennison cd68e9fac7 Linkgraph: Do not pre-fill annos set at start of MCF Dijkstra 7 years ago
Jonathan G Rennison 4a420ef864 Linkgraph: Use cached value in capacity annotation comparison 7 years ago
Jonathan G Rennison 117b56caeb Linkgraph: Replace a std::list with a std::vector. 8 years ago
Jonathan G Rennison c86a027e88 Linkgraph: Use an arena allocator for path objects.
Fixes leaks when job is aborted early.
8 years ago
Jonathan G Rennison 3f2c561867 Linkgraph: Add support for aborting MCF passes early. 8 years ago
Jonathan G Rennison 9d5f34fea6 Replace various uses of std::set/map with btree containers. 8 years ago
Jonathan G Rennison 7b56097f50 Merge branch 'master' into jgrpp
# Conflicts:
#	config.lib
#	src/linkgraph/demands.cpp
#	src/linkgraph/mcf.cpp
#	src/linkgraph/refresh.cpp
#	src/linkgraph/refresh.h
#	src/smallmap_gui.cpp
8 years ago
fonsinchen 022b284064 (svn r27613) -Codechange: Use a flat vector instead of a map in FlowEdgeIterator. (JGR) 8 years ago
fonsinchen a81b7a24a6 (svn r27613) -Codechange: Use a flat vector instead of a map in FlowEdgeIterator. (JGR) 8 years ago
fonsinchen bcdae9a093 (svn r27611) -Codechange: Cache the calculated value of CapacityAnnotation 8 years ago
fonsinchen 8d5566651b (svn r27611) -Codechange: Cache the calculated value of CapacityAnnotation 8 years ago
Jonathan G Rennison 58b6bf16c3 Linkgraph: Enable MCF custom allocator only for GCC 4.9+
Earlier compilers don't use std::allocator_traits to query allocators.
9 years ago
Jonathan G Rennison e22e1df939 Store annotation and node ID in set key, to reduce ptr derefs on sort.
Store the set iterator in the node, for faster erasing during forks.

Use a custom pool allocator to store set nodes contiguously.
9 years ago
Jonathan G Rennison 0fb79a8f15 Use a flat vector instead of a map in FlowEdgeIterator.
This reduced the cost of Dijkstra<CapacityAnnotation> by approx. 25%,
in a test profiling.
9 years ago
Jonathan G Rennison 564744d427 Cache the calculated value of CapacityAnnotation.
This is because CapacityAnnotation::Comparator::operator()
was appearing at the top of profiler output due to regenerating
the annotation value on every comparison when performing a set operation.
9 years ago
frosch a14b836bf2 (svn r27178) -Fix [FS#5969]: Data race due to lazy initialisation of objects. 9 years ago
frosch 780e595933 (svn r27178) -Fix [FS#5969]: Data race due to lazy initialisation of objects. 9 years ago
rubidium 0c2f4bdc2b (svn r27020) -Cleanup: some coding style consistency improvements (mostly spaces) 10 years ago
rubidium d534c80e94 (svn r27020) -Cleanup: some coding style consistency improvements (mostly spaces) 10 years ago
fonsinchen ef2caa02b2 (svn r26646) -Fix [FS#6041]: Save locations instead of distances in link graphs to reduce size. 10 years ago
fonsinchen 957f5ca117 (svn r26646) -Fix [FS#6041]: Save locations instead of distances in link graphs to reduce size. 10 years ago
rubidium 2be4215f43 (svn r26482) -Codechange: add an include that allows us to undefine/redefine "unsafe" functions to prevent them from being used, and thus having to care about certain aspects of their return values 10 years ago
rubidium 0463dbdc9e (svn r26482) -Codechange: add an include that allows us to undefine/redefine "unsafe" functions to prevent them from being used, and thus having to care about certain aspects of their return values 10 years ago
fonsinchen 6580fd4b8f (svn r25885) -Codechange: Keep paths sorted so that the ones with flow == 0 are in the back and don't have to be iterated over so often. 11 years ago
fonsinchen b3b460cae2 (svn r25885) -Codechange: Keep paths sorted so that the ones with flow == 0 are in the back and don't have to be iterated over so often. 11 years ago
fonsinchen 1cc410f7bb (svn r25356) -Add: Multi-Commodity-Flow solver for link graph 11 years ago
fonsinchen 9824d53d6a (svn r25356) -Add: Multi-Commodity-Flow solver for link graph 11 years ago