Comments (2)
First results using 50 instances for each size among 20, 50, 100, 250, 500, 750, 1000 and 1500 jobs. Only the cumulative timings (in ms) for actions that are somehow related to OSRM calls are reported (solving time is omitted).
Size | osrm-routed |
libosrm |
Diff (%) | ||||||
---|---|---|---|---|---|---|---|---|---|
L | R | L + R | L | R | L + R | L | R | L + R | |
20 | 987 | 779 | 1766 | 1916 | 1114 | 3030 | +94.12 | +43.00 | +71.57 |
50 | 2438 | 1507 | 3945 | 3712 | 2081 | 5793 | +52.26 | +38.09 | +46.84 |
100 | 5271 | 2400 | 7671 | 5818 | 3241 | 9059 | +10.38 | +35.04 | +18.09 |
250 | 15553 | 4630 | 20183 | 12956 | 5915 | 18871 | -16.70 | +27.75 | -6.50 |
500 | 41607 | 7791 | 49398 | 26961 | 9452 | 36413 | -35.20 | +21.32 | -26.29 |
750 | 78246 | 10678 | 88924 | 42864 | 12458 | 55322 | -45.22 | +16.67 | -37.79 |
1000 | 124068 | 13340 | 137408 | 60573 | 15320 | 75893 | -51.18 | +14.84 | -44.77 |
1500 | 248006 | 18468 | 266474 | 105432 | 20528 | 125960 | -57.49 | +11.15 | -52.73 |
L stands for loading, which includes setting the table
request and firing it but also other things that differ:
- with
libosrm
, creatingosrm::EngineConfig
andosrm::OSRM
objects and going through the matrix usingosrm::json::Array
s; - with
osrm-routed
, parsing the request result withrapidjson
and going through the matrix usingrapidjson
objects.
R stands for routing, which includes setting the route
request and firing it but also other things that differ:
- with
libosrm
, turning the (huge)osrm::json::String
to arapidjson::Value
for output; - with
osrm-routed
, parsing the request result withrapidjson
and moving the route geometry.
In case anyone wants to reproduce the experiment:
- build OSRM at tag
v5.4.1
. - build VROOM at 7def96a
- use this France extract
- generate benchmark files from the setup script at https://github.com/VROOM-Project/vroom-scripts/tree/master/benchmark/libosrm.
from vroom.
Quick comments.
- the gain in the L phase that includes the
table
request is the most significant when instances size grow, which makes sense as the size of the data being serialized withinosrm-routed
and then parsed withrapidjson
isO(n^2)
. - I suspect the difference in the R phase doesn't reflect the
libosrm
andosrm-routed
performance as it is probably very much impacted by passing around the route geometry at https://github.com/VROOM-Project/vroom/blob/develop/src/loaders/libosrm_loader.h#L141-L144
from vroom.
Related Issues (20)
- Update OS and compilers in CI HOT 1
- Use `std::format` HOT 4
- Use address and UB sanitizers HOT 3
- Handle routing engine http statuses HOT 7
- Ensure request interpretation as TSP HOT 3
- Error with inconsistent vehicle capacity arrays HOT 1
- Seeking Advice: Implementing User-Defined Routes with Invisible Points to Guide Optimization Algorithm HOT 4
- Design of Matrix class HOT 7
- Refactor functions to accept a range instead of a pair of iterators HOT 2
- Compiler warning in gcc-12 build HOT 5
- Update GitHub Actions HOT 1
- Speed up OSRM CI build HOT 2
- Mismatch in compilers used for OSRM and VROOM in CI HOT 1
- VROOM schedules next-day deliveries despite sufficient time windows HOT 5
- Can i solve this user case with VROOM? HOT 2
- More unassigned when using 1 vehicles instead of 2, while creating always 1 route only HOT 10
- Function template names forward iterator while in fact it requires a random access iterator HOT 4
- position job by time HOT 11
- Evaluating dropping rapidjson HOT 5
- vroom-docker with osrm HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vroom.