-
Notifications
You must be signed in to change notification settings - Fork 85
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 graph performance #191
Comments
This was referenced Sep 13, 2016
#192 depends on the implementation of this issue. |
4 tasks
mapillary/mapillary_issues#2257 depends on the implementation of this issue. |
@oscarlorentzon you wanna close this issue and open a new one with remaining tasks? |
Graph implemented according to diagram above. Separate issues created for remaingin functionality from description. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The performance for building the graph is currently bad in areas where there is high node density. The problem has many reasons, the most important one being that tiles are loaded with too many nodes, the nodes contain too much data and the tiles contains all the sequences for all the nodes in the tile. The sequences are retrieved for every tile, i.e. duplicates that are not needed are retrieved for adjacent tiles. The tiles can therefor be vary large which requires good network connection for fast retrieval. The aim of this issue is to completely rebuild the graph implementation to make it fast and dynamic.
To resolve the performance issue, the graph implementation needs to be completely rewritten. When doing this a number of other points should be addressed as well. The new implementation should be written in a way that supports the following:
The idea of the new graph implementation is for data to flow in the following way:
In this way the node could potentially be put on the state once the node assets (image, mesh) have arrived but before the edges have been calculated. The lightweight tiles would not contain heavy node or sequence data and be fast to retrieve. The spatial edge calculation would rely on the
heavy
data but it would only be retrieved for exactly the image keys that are needed. The rbush spatial index will be used for determining what keys need to be turned in nodes by fetching the heavy node data. The sequence edge calculation would need to fetch the sequences for the nodes that requires edge calculation only. Falcor will be used to cache as well as batch load requests.The implementation of the new graph issue includes:
imByKey
fetching for areas required for edge calculationThis issue requires breaking changes to the public API, therefor the library version needs to be pushed to 2.0 when implemented.
The text was updated successfully, but these errors were encountered: