-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
Use pool allocator in QueryHeap #6943
base: master
Are you sure you want to change the base?
Conversation
bd2d9a0
to
0723dc0
Compare
d780dc7
to
e4e90f4
Compare
e4e90f4
to
7eb2d93
Compare
4b985c6
to
6d2fc45
Compare
4649177
to
270f187
Compare
e53df3b
to
1436e96
Compare
@@ -116,8 +116,8 @@ class CellCustomizer | |||
const std::vector<bool> &allowed_nodes, | |||
CellMetric &metric) const | |||
{ | |||
Heap heap_exemplar(graph.GetNumberOfNodes()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It used to work in a way that TBB copied heap_exemplar
to each thread. QueryHeap started using thread local allocator, so here we had a situation when QueryHeap has PoolAllocator somewhere in its internals and this PoolAllocator has a pointer to its thread local memory pool, then we copy this QueryHeap to another thread and now new exemplar of QueryHeap has another PoolAllocator with a pointer to exactly the same memory pool, but now it is used on another thread!
With such change we guarantee that each thread creates heap for itself on its own.
.github/workflows/osrm-backend.yml
Outdated
@@ -653,7 +653,7 @@ jobs: | |||
benchmarks: | |||
if: github.event_name == 'pull_request' | |||
needs: [format-taginfo-docs] | |||
runs-on: ubuntu-24.04 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
copy-paste from #6975
Just to make benchmark results more stable, I'll remove it before merge.
@DennisOSRM would love to have your opinion here :) |
I spent some hours in profiler and noticed that we waste a lot of time for allocations in QueryHeap:
After some experiments I ended up with custom pool allocator which uses thread local free lists to re-use already allocated memory. Idea is primitive:
What alternatives I considered, but rejected
Result highlights
Measured on my Raspberry Pi:
map matching CH (default radius) ops/sec: +22%
map matching MLD (default radius) ops/sec: +35%(!)
table CH (25 coordinates) ops/sec: +8%
table MLD (25 coordinates) ops/sec: +8%
route CH (overview=full, steps=true) ops/sec: +1%
route MLD (overview=full, steps=true) ops/sec: +10%
osrm-contract run time: -20%
osrm-customize run time: -23%
Worth saying that that there is some improvements almost in all benchmarks...
Benchmark Results
plain u32: 10965.2
aliased double: 15131.9
plain double: 15110.1
plain u32: 10916.2
aliased double: 15050.4
plain double: 15040.3
Total: 5002.36ms ± 3.05ms. Best: 4998.42ms
Min time: 3.25ms ± 0.05ms
Mean time: 38.19ms ± 0.02ms
Median time: 26.22ms ± 0.10ms
95th percentile: 129.92ms ± 0.19ms
99th percentile: 157.86ms ± 0.33ms
Max time: 164.05ms ± 0.59ms
Total: 3987.24ms ± 1.76ms. Best: 3983.71ms
Min time: 3.09ms ± 0.05ms
Mean time: 30.44ms ± 0.01ms
Median time: 21.32ms ± 0.03ms
95th percentile: 102.18ms ± 0.11ms
99th percentile: 117.82ms ± 0.13ms
Max time: 125.92ms ± 0.27ms
Total: 3014.38ms ± 2.83ms. Best: 3010.92ms
Min time: 2.59ms ± 0.04ms
Mean time: 23.01ms ± 0.02ms
Median time: 12.05ms ± 0.08ms
95th percentile: 75.53ms ± 0.16ms
99th percentile: 87.68ms ± 0.16ms
Max time: 100.83ms ± 0.28ms
Total: 2189.24ms ± 1.18ms. Best: 2187.15ms
Min time: 2.32ms ± 0.05ms
Mean time: 16.71ms ± 0.01ms
Median time: 9.38ms ± 0.08ms
95th percentile: 52.02ms ± 0.09ms
99th percentile: 59.06ms ± 0.16ms
Max time: 66.86ms ± 0.20ms
Total: 1572.58ms ± 15.03ms. Best: 1552.66ms
Min time: 1.28ms ± 0.00ms
Mean time: 1.57ms ± 0.02ms
Median time: 1.54ms ± 0.01ms
95th percentile: 1.96ms ± 0.01ms
99th percentile: 2.05ms ± 0.01ms
Max time: 9.32ms ± 7.40ms
Total: 1570.34ms ± 9.08ms. Best: 1558.63ms
Min time: 1.29ms ± 0.01ms
Mean time: 1.57ms ± 0.01ms
Median time: 1.53ms ± 0.01ms
95th percentile: 1.95ms ± 0.01ms
99th percentile: 2.05ms ± 0.01ms
Max time: 9.37ms ± 7.46ms
Total: 1568.82ms ± 6.45ms. Best: 1558.36ms
Min time: 1.28ms ± 0.01ms
Mean time: 1.57ms ± 0.01ms
Median time: 1.53ms ± 0.01ms
95th percentile: 1.95ms ± 0.01ms
99th percentile: 2.05ms ± 0.01ms
Max time: 9.35ms ± 7.42ms
Total: 1568.37ms ± 12.03ms. Best: 1545.03ms
Min time: 1.28ms ± 0.01ms
Mean time: 1.57ms ± 0.01ms
Median time: 1.53ms ± 0.01ms
95th percentile: 1.96ms ± 0.01ms
99th percentile: 2.04ms ± 0.01ms
Max time: 9.32ms ± 7.44ms
Total: 4612.55ms ± 10.63ms. Best: 4598.56ms
Min time: 1.86ms ± 0.03ms
Mean time: 4.61ms ± 0.01ms
Median time: 4.71ms ± 0.02ms
95th percentile: 6.07ms ± 0.02ms
99th percentile: 6.62ms ± 0.05ms
Max time: 13.32ms ± 6.36ms
Total: 4617.82ms ± 13.12ms. Best: 4599.68ms
Min time: 1.88ms ± 0.04ms
Mean time: 4.62ms ± 0.01ms
Median time: 4.71ms ± 0.02ms
95th percentile: 6.08ms ± 0.01ms
99th percentile: 6.59ms ± 0.06ms
Max time: 13.33ms ± 6.40ms
Total: 5593.32ms ± 10.29ms. Best: 5576.05ms
Min time: 1.87ms ± 0.07ms
Mean time: 5.59ms ± 0.01ms
Median time: 5.72ms ± 0.02ms
95th percentile: 7.62ms ± 0.01ms
99th percentile: 8.14ms ± 0.04ms
Max time: 14.68ms ± 5.90ms
Total: 5465.83ms ± 8.40ms. Best: 5451.76ms
Min time: 1.88ms ± 0.07ms
Mean time: 5.47ms ± 0.01ms
Median time: 5.59ms ± 0.01ms
95th percentile: 7.40ms ± 0.02ms
99th percentile: 7.97ms ± 0.08ms
Max time: 14.47ms ± 5.97ms
Total: 4751.61ms ± 6.35ms. Best: 4741.25ms
Min time: 2.52ms ± 0.05ms
Mean time: 4.75ms ± 0.01ms
Median time: 4.77ms ± 0.02ms
95th percentile: 6.48ms ± 0.01ms
99th percentile: 6.80ms ± 0.03ms
Max time: 14.02ms ± 7.01ms
Total: 4546.05ms ± 10.42ms. Best: 4531.26ms
Min time: 2.45ms ± 0.04ms
Mean time: 4.55ms ± 0.01ms
Median time: 4.55ms ± 0.00ms
95th percentile: 6.14ms ± 0.01ms
99th percentile: 6.50ms ± 0.05ms
Max time: 13.62ms ± 7.10ms
Total: 14639.82ms ± 12.41ms. Best: 14623.94ms
Min time: 6.12ms ± 0.08ms
Mean time: 14.64ms ± 0.01ms
Median time: 14.61ms ± 0.03ms
95th percentile: 22.23ms ± 0.04ms
99th percentile: 23.41ms ± 0.03ms
Max time: 29.78ms ± 5.58ms
Total: 13160.35ms ± 9.12ms. Best: 13145.61ms
Min time: 5.60ms ± 0.05ms
Mean time: 13.16ms ± 0.01ms
Median time: 13.12ms ± 0.01ms
95th percentile: 19.91ms ± 0.07ms
99th percentile: 21.02ms ± 0.06ms
Max time: 27.55ms ± 5.86ms
Total: 16077.97ms ± 8.95ms. Best: 16061.39ms
Min time: 2.40ms ± 0.19ms
Mean time: 16.08ms ± 0.01ms
Median time: 15.31ms ± 0.01ms
95th percentile: 28.32ms ± 0.02ms
99th percentile: 30.51ms ± 0.07ms
Max time: 33.02ms ± 1.33ms
Total: 15821.43ms ± 8.07ms. Best: 15809.58ms
Min time: 2.44ms ± 0.15ms
Mean time: 15.82ms ± 0.01ms
Median time: 15.05ms ± 0.02ms
95th percentile: 27.88ms ± 0.02ms
99th percentile: 30.04ms ± 0.09ms
Max time: 32.59ms ± 1.39ms
Total: 27129.49ms ± 7.23ms. Best: 27113.10ms
Min time: 2.49ms ± 0.16ms
Mean time: 27.13ms ± 0.01ms
Median time: 26.30ms ± 0.08ms
95th percentile: 44.24ms ± 0.05ms
99th percentile: 46.80ms ± 0.10ms
Max time: 49.16ms ± 0.15ms
Total: 25449.85ms ± 10.27ms. Best: 25434.69ms
Min time: 2.54ms ± 0.20ms
Mean time: 25.45ms ± 0.01ms
Median time: 24.62ms ± 0.06ms
95th percentile: 41.70ms ± 0.06ms
99th percentile: 44.15ms ± 0.11ms
Max time: 46.44ms ± 0.32ms
Stringstream: 14.444ms
Vector: 9.49343ms
Stringstream: 14.6759ms
Vector: 9.445ms
7.05707ms/req at 82 coordinate
0.0860618ms/coordinate
Radius 10m:
24.9563ms/req at 82 coordinate
0.304345ms/coordinate
6.11063ms/req at 82 coordinate
0.0745199ms/coordinate
Radius 10m:
21.4601ms/req at 82 coordinate
0.261708ms/coordinate
4.3271ms/req at 82 coordinate
0.0527696ms/coordinate
Radius 10m:
16.1675ms/req at 82 coordinate
0.197164ms/coordinate
3.05044ms/req at 82 coordinate
0.0372005ms/coordinate
Radius 10m:
10.4792ms/req at 82 coordinate
0.127795ms/coordinate
std::vector 184766 ms
util::packed_vector 377132 ms
slowdown: 2.04113
random read:
std::vector 100564 ms
util::packed_vector 192157 ms
slowdown: 1.91078
std::vector 183179 ms
util::packed_vector 372499 ms
slowdown: 2.03353
random read:
std::vector 100185 ms
util::packed_vector 190285 ms
slowdown: 1.89934
ops: 127.11 ± 0.10 ops/s. best: 127.23ops/s.
total: 448.43 ± 0.35ms. best: 447.99ms.
avg: 7.87 ± 0.01ms
min: 0.22 ± 0.01ms
max: 42.75 ± 0.09ms
p99: 42.75 ± 0.09ms
500 matches, radius=10
ops: 36.70 ± 0.03 ops/s. best: 36.76ops/s.
total: 1744.07 ± 1.38ms. best: 1740.86ms.
avg: 27.25 ± 0.02ms
min: 0.24 ± 0.00ms
max: 411.01 ± 1.21ms
p99: 411.01 ± 1.21ms
500 matches, radius=20
ops: 8.67 ± 0.01 ops/s. best: 8.70ops/s.
total: 7494.72 ± 8.34ms. best: 7472.85ms.
avg: 115.30 ± 0.13ms
min: 0.48 ± 0.00ms
max: 2182.14 ± 4.63ms
p99: 2182.14 ± 4.63ms
Peak RAM: 54.500MB
ops: 163.46 ± 0.21 ops/s. best: 163.69ops/s.
total: 348.70 ± 0.44ms. best: 348.22ms.
avg: 6.12 ± 0.01ms
min: 0.22 ± 0.00ms
max: 33.45 ± 0.03ms
p99: 33.45 ± 0.03ms
500 matches, radius=10
ops: 47.44 ± 0.01 ops/s. best: 47.45ops/s.
total: 1349.17 ± 0.33ms. best: 1348.81ms.
avg: 21.08 ± 0.01ms
min: 0.24 ± 0.00ms
max: 325.07 ± 0.29ms
p99: 325.07 ± 0.29ms
500 matches, radius=20
ops: 11.22 ± 0.00 ops/s. best: 11.23ops/s.
total: 5792.58 ± 1.80ms. best: 5790.03ms.
avg: 89.12 ± 0.03ms
min: 0.43 ± 0.00ms
max: 1724.44 ± 1.42ms
p99: 1724.44 ± 1.42ms
Peak RAM: 54.500MB
ops: 203.96 ± 0.56 ops/s. best: 204.39ops/s.
total: 279.47 ± 0.77ms. best: 278.87ms.
avg: 4.90 ± 0.01ms
min: 0.20 ± 0.00ms
max: 27.06 ± 0.06ms
p99: 27.06 ± 0.06ms
500 matches, radius=10
ops: 72.37 ± 0.07 ops/s. best: 72.53ops/s.
total: 884.37 ± 0.88ms. best: 882.41ms.
avg: 13.82 ± 0.01ms
min: 0.23 ± 0.00ms
max: 162.33 ± 0.47ms
p99: 162.33 ± 0.47ms
500 matches, radius=20
ops: 15.10 ± 0.02 ops/s. best: 15.12ops/s.
total: 4304.21 ± 4.80ms. best: 4299.39ms.
avg: 66.22 ± 0.07ms
min: 0.29 ± 0.00ms
max: 845.55 ± 2.03ms
p99: 845.55 ± 2.03ms
Peak RAM: 51.000MB
ops: 312.11 ± 1.00 ops/s. best: 313.05ops/s.
total: 182.63 ± 0.59ms. best: 182.08ms.
avg: 3.20 ± 0.01ms
min: 0.18 ± 0.00ms
max: 17.79 ± 0.04ms
p99: 17.79 ± 0.04ms
500 matches, radius=10
ops: 115.74 ± 0.02 ops/s. best: 115.77ops/s.
total: 552.94 ± 0.11ms. best: 552.80ms.
avg: 8.64 ± 0.00ms
min: 0.23 ± 0.00ms
max: 98.31 ± 0.09ms
p99: 98.31 ± 0.09ms
500 matches, radius=20
ops: 23.21 ± 0.00 ops/s. best: 23.21ops/s.
total: 2800.95 ± 0.49ms. best: 2800.09ms.
avg: 43.09 ± 0.01ms
min: 0.26 ± 0.00ms
max: 521.82 ± 0.30ms
p99: 521.82 ± 0.30ms
Peak RAM: 50.500MB
ops: 22051.57 ± 38.00 ops/s. best: 22081.55ops/s.
total: 453.48 ± 0.78ms. best: 452.87ms.
avg: 0.05 ± 0.00ms
min: 0.01 ± 0.00ms
max: 0.15 ± 0.01ms
p99: 0.12 ± 0.00ms
10000 nearest, number_of_results=5
ops: 15946.80 ± 10.37 ops/s. best: 15956.58ops/s.
total: 627.09 ± 0.41ms. best: 626.70ms.
avg: 0.06 ± 0.00ms
min: 0.03 ± 0.00ms
max: 0.15 ± 0.00ms
p99: 0.13 ± 0.00ms
10000 nearest, number_of_results=10
ops: 12126.05 ± 4.04 ops/s. best: 12131.66ops/s.
total: 824.67 ± 0.27ms. best: 824.29ms.
avg: 0.08 ± 0.00ms
min: 0.04 ± 0.00ms
max: 0.17 ± 0.00ms
p99: 0.15 ± 0.00ms
Peak RAM: 34.500MB
ops: 22161.52 ± 43.78 ops/s. best: 22199.56ops/s.
total: 451.24 ± 0.89ms. best: 450.46ms.
avg: 0.05 ± 0.00ms
min: 0.01 ± 0.00ms
max: 0.15 ± 0.01ms
p99: 0.12 ± 0.00ms
10000 nearest, number_of_results=5
ops: 15896.29 ± 8.55 ops/s. best: 15906.51ops/s.
total: 629.08 ± 0.35ms. best: 628.67ms.
avg: 0.06 ± 0.00ms
min: 0.03 ± 0.00ms
max: 0.18 ± 0.04ms
p99: 0.13 ± 0.00ms
10000 nearest, number_of_results=10
ops: 12034.01 ± 3.47 ops/s. best: 12039.43ops/s.
total: 830.98 ± 0.24ms. best: 830.60ms.
avg: 0.08 ± 0.00ms
min: 0.04 ± 0.00ms
max: 0.17 ± 0.00ms
p99: 0.15 ± 0.00ms
Peak RAM: 34.500MB
ops: 22039.86 ± 35.28 ops/s. best: 22066.99ops/s.
total: 453.73 ± 0.73ms. best: 453.17ms.
avg: 0.05 ± 0.00ms
min: 0.01 ± 0.00ms
max: 0.14 ± 0.01ms
p99: 0.12 ± 0.00ms
10000 nearest, number_of_results=5
ops: 15941.51 ± 12.32 ops/s. best: 15951.15ops/s.
total: 627.29 ± 0.49ms. best: 626.91ms.
avg: 0.06 ± 0.00ms
min: 0.03 ± 0.00ms
max: 0.15 ± 0.00ms
p99: 0.13 ± 0.00ms
10000 nearest, number_of_results=10
ops: 12120.91 ± 6.18 ops/s. best: 12130.19ops/s.
total: 825.02 ± 0.41ms. best: 824.39ms.
avg: 0.08 ± 0.00ms
min: 0.04 ± 0.00ms
max: 0.17 ± 0.00ms
p99: 0.15 ± 0.00ms
Peak RAM: 34.500MB
ops: 22144.07 ± 35.19 ops/s. best: 22177.93ops/s.
total: 451.59 ± 0.72ms. best: 450.90ms.
avg: 0.05 ± 0.00ms
min: 0.01 ± 0.00ms
max: 0.14 ± 0.01ms
p99: 0.12 ± 0.00ms
10000 nearest, number_of_results=5
ops: 15895.86 ± 5.87 ops/s. best: 15902.36ops/s.
total: 629.09 ± 0.23ms. best: 628.84ms.
avg: 0.06 ± 0.00ms
min: 0.03 ± 0.00ms
max: 0.15 ± 0.00ms
p99: 0.13 ± 0.00ms
10000 nearest, number_of_results=10
ops: 12029.13 ± 4.09 ops/s. best: 12034.53ops/s.
total: 831.32 ± 0.28ms. best: 830.94ms.
avg: 0.08 ± 0.00ms
min: 0.04 ± 0.00ms
max: 0.17 ± 0.00ms
p99: 0.15 ± 0.00ms
Peak RAM: 34.500MB
ops: 281.70 ± 0.17 ops/s. best: 281.87ops/s.
total: 3493.08 ± 2.08ms. best: 3491.00ms.
avg: 3.55 ± 0.00ms
min: 0.39 ± 0.01ms
max: 6.01 ± 0.04ms
p99: 5.27 ± 0.01ms
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
ops: 310.41 ± 0.04 ops/s. best: 310.46ops/s.
total: 3221.54 ± 0.40ms. best: 3221.05ms.
avg: 3.22 ± 0.00ms
min: 0.08 ± 0.00ms
max: 7.22 ± 0.01ms
p99: 6.85 ± 0.01ms
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
ops: 575.77 ± 0.07 ops/s. best: 575.87ops/s.
total: 1709.03 ± 0.22ms. best: 1708.73ms.
avg: 1.74 ± 0.00ms
min: 0.31 ± 0.01ms
max: 2.88 ± 0.01ms
p99: 2.46 ± 0.01ms
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
ops: 578.14 ± 0.07 ops/s. best: 578.26ops/s.
total: 1729.69 ± 0.22ms. best: 1729.32ms.
avg: 1.73 ± 0.00ms
min: 0.06 ± 0.00ms
max: 5.17 ± 0.01ms
p99: 4.04 ± 0.01ms
Peak RAM: 84.000MB
ops: 288.90 ± 0.13 ops/s. best: 289.02ops/s.
total: 3406.00 ± 1.55ms. best: 3404.62ms.
avg: 3.46 ± 0.00ms
min: 0.40 ± 0.01ms
max: 5.94 ± 0.04ms
p99: 5.16 ± 0.01ms
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
ops: 313.83 ± 0.10 ops/s. best: 313.96ops/s.
total: 3186.40 ± 1.01ms. best: 3185.10ms.
avg: 3.19 ± 0.00ms
min: 0.08 ± 0.00ms
max: 7.17 ± 0.01ms
p99: 6.79 ± 0.01ms
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
ops: 607.56 ± 0.16 ops/s. best: 607.81ops/s.
total: 1619.59 ± 0.43ms. best: 1618.93ms.
avg: 1.65 ± 0.00ms
min: 0.30 ± 0.00ms
max: 2.69 ± 0.00ms
p99: 2.35 ± 0.01ms
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
ops: 595.37 ± 0.14 ops/s. best: 595.55ops/s.
total: 1679.63 ± 0.39ms. best: 1679.12ms.
avg: 1.68 ± 0.00ms
min: 0.06 ± 0.00ms
max: 4.95 ± 0.01ms
p99: 3.91 ± 0.01ms
Peak RAM: 84.000MB
ops: 147.72 ± 0.04 ops/s. best: 147.75ops/s.
total: 6661.26 ± 1.88ms. best: 6659.70ms.
avg: 6.77 ± 0.00ms
min: 0.37 ± 0.00ms
max: 16.23 ± 0.02ms
p99: 11.01 ± 0.01ms
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
ops: 142.44 ± 0.02 ops/s. best: 142.47ops/s.
total: 7020.38 ± 0.90ms. best: 7019.19ms.
avg: 7.02 ± 0.00ms
min: 0.07 ± 0.00ms
max: 15.92 ± 0.04ms
p99: 15.01 ± 0.02ms
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
ops: 205.67 ± 0.01 ops/s. best: 205.69ops/s.
total: 4784.34 ± 0.16ms. best: 4784.00ms.
avg: 4.86 ± 0.00ms
min: 0.32 ± 0.00ms
max: 13.49 ± 0.01ms
p99: 8.40 ± 0.01ms
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
ops: 178.17 ± 0.05 ops/s. best: 178.25ops/s.
total: 5612.66 ± 1.56ms. best: 5609.95ms.
avg: 5.61 ± 0.00ms
min: 0.05 ± 0.00ms
max: 12.15 ± 0.02ms
p99: 11.56 ± 0.01ms
Peak RAM: 73.297MB
ops: 163.86 ± 0.01 ops/s. best: 163.87ops/s.
total: 6005.13 ± 0.33ms. best: 6004.61ms.
avg: 6.10 ± 0.00ms
min: 0.38 ± 0.00ms
max: 14.27 ± 0.03ms
p99: 9.89 ± 0.01ms
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
ops: 162.05 ± 0.03 ops/s. best: 162.10ops/s.
total: 6171.04 ± 1.09ms. best: 6169.02ms.
avg: 6.17 ± 0.00ms
min: 0.07 ± 0.00ms
max: 14.29 ± 0.09ms
p99: 13.33 ± 0.03ms
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
ops: 239.43 ± 0.02 ops/s. best: 239.45ops/s.
total: 4109.78 ± 0.34ms. best: 4109.47ms.
avg: 4.18 ± 0.00ms
min: 0.31 ± 0.00ms
max: 11.47 ± 0.01ms
p99: 7.15 ± 0.02ms
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
ops: 211.07 ± 0.17 ops/s. best: 211.36ops/s.
total: 4737.75 ± 3.72ms. best: 4731.19ms.
avg: 4.74 ± 0.00ms
min: 0.05 ± 0.00ms
max: 10.62 ± 0.10ms
p99: 9.92 ± 0.01ms
Peak RAM: 73.422MB
ops: 1067.80 ± 4.22 ops/s. best: 1071.17ops/s.
total: 234.13 ± 0.93ms. best: 233.39ms.
avg: 0.94 ± 0.00ms
min: 0.71 ± 0.00ms
max: 1.24 ± 0.15ms
p99: 1.11 ± 0.00ms
250 tables, 25 coordinates
ops: 119.99 ± 0.02 ops/s. best: 120.03ops/s.
total: 2083.47 ± 0.38ms. best: 2082.81ms.
avg: 8.33 ± 0.00ms
min: 7.74 ± 0.01ms
max: 9.01 ± 0.01ms
p99: 8.82 ± 0.01ms
250 tables, 50 coordinates
ops: 58.45 ± 0.00 ops/s. best: 58.46ops/s.
total: 4277.29 ± 0.36ms. best: 4276.78ms.
avg: 17.11 ± 0.00ms
min: 16.27 ± 0.01ms
max: 18.00 ± 0.01ms
p99: 17.94 ± 0.01ms
Peak RAM: 63.000MB
ops: 1176.70 ± 5.86 ops/s. best: 1181.10ops/s.
total: 212.47 ± 1.07ms. best: 211.67ms.
avg: 0.85 ± 0.00ms
min: 0.63 ± 0.00ms
max: 1.15 ± 0.16ms
p99: 1.02 ± 0.02ms
250 tables, 25 coordinates
ops: 131.51 ± 0.03 ops/s. best: 131.54ops/s.
total: 1901.03 ± 0.40ms. best: 1900.61ms.
avg: 7.60 ± 0.00ms
min: 7.03 ± 0.01ms
max: 8.23 ± 0.01ms
p99: 8.07 ± 0.01ms
250 tables, 50 coordinates
ops: 63.71 ± 0.01 ops/s. best: 63.72ops/s.
total: 3924.29 ± 0.43ms. best: 3923.46ms.
avg: 15.70 ± 0.00ms
min: 14.96 ± 0.01ms
max: 16.57 ± 0.01ms
p99: 16.48 ± 0.01ms
Peak RAM: 62.500MB
ops: 226.17 ± 0.34 ops/s. best: 226.41ops/s.
total: 1105.39 ± 1.66ms. best: 1104.18ms.
avg: 4.42 ± 0.01ms
min: 3.48 ± 0.01ms
max: 5.71 ± 0.02ms
p99: 5.55 ± 0.01ms
250 tables, 25 coordinates
ops: 23.83 ± 0.01 ops/s. best: 23.85ops/s.
total: 10492.60 ± 4.27ms. best: 10482.86ms.
avg: 41.97 ± 0.02ms
min: 38.73 ± 0.05ms
max: 45.77 ± 0.10ms
p99: 45.06 ± 0.03ms
250 tables, 50 coordinates
ops: 11.04 ± 0.00 ops/s. best: 11.05ops/s.
total: 22636.41 ± 9.41ms. best: 22615.16ms.
avg: 90.55 ± 0.04ms
min: 86.47 ± 0.16ms
max: 96.15 ± 0.26ms
p99: 94.53 ± 0.19ms
Peak RAM: 63.172MB
ops: 252.14 ± 0.33 ops/s. best: 252.37ops/s.
total: 991.53 ± 1.30ms. best: 990.60ms.
avg: 3.97 ± 0.01ms
min: 3.11 ± 0.01ms
max: 5.16 ± 0.03ms
p99: 5.03 ± 0.01ms
250 tables, 25 coordinates
ops: 26.19 ± 0.00 ops/s. best: 26.20ops/s.
total: 9543.95 ± 0.45ms. best: 9543.50ms.
avg: 38.18 ± 0.00ms
min: 35.18 ± 0.03ms
max: 41.61 ± 0.01ms
p99: 41.06 ± 0.03ms
250 tables, 50 coordinates
ops: 12.02 ± 0.00 ops/s. best: 12.02ops/s.
total: 20797.16 ± 0.91ms. best: 20795.55ms.
avg: 83.19 ± 0.00ms
min: 79.31 ± 0.05ms
max: 88.61 ± 0.14ms
p99: 87.25 ± 0.02ms
Peak RAM: 62.750MB
ops: 316.37 ± 0.45 ops/s. best: 316.78ops/s.
total: 790.21 ± 1.13ms. best: 789.20ms.
avg: 3.16 ± 0.00ms
min: 1.72 ± 0.01ms
max: 4.40 ± 0.01ms
p99: 4.19 ± 0.01ms
250 trips, 5 coordinates
ops: 204.38 ± 0.05 ops/s. best: 204.46ops/s.
total: 1223.20 ± 0.30ms. best: 1222.76ms.
avg: 4.89 ± 0.00ms
min: 3.27 ± 0.00ms
max: 6.15 ± 0.01ms
p99: 6.04 ± 0.02ms
Peak RAM: 73.500MB
ops: 333.92 ± 0.49 ops/s. best: 334.31ops/s.
total: 748.68 ± 1.11ms. best: 747.81ms.
avg: 2.99 ± 0.00ms
min: 1.58 ± 0.01ms
max: 4.23 ± 0.01ms
p99: 4.01 ± 0.03ms
250 trips, 5 coordinates
ops: 216.05 ± 0.05 ops/s. best: 216.12ops/s.
total: 1157.12 ± 0.28ms. best: 1156.74ms.
avg: 4.63 ± 0.00ms
min: 3.03 ± 0.00ms
max: 5.86 ± 0.01ms
p99: 5.75 ± 0.01ms
Peak RAM: 73.500MB
ops: 107.17 ± 0.06 ops/s. best: 107.29ops/s.
total: 2332.80 ± 1.30ms. best: 2330.10ms.
avg: 9.33 ± 0.01ms
min: 5.48 ± 0.01ms
max: 12.12 ± 0.06ms
p99: 12.03 ± 0.03ms
250 trips, 5 coordinates
ops: 68.78 ± 0.13 ops/s. best: 68.99ops/s.
total: 3634.56 ± 6.63ms. best: 3623.76ms.
avg: 14.54 ± 0.03ms
min: 10.06 ± 0.04ms
max: 17.85 ± 0.08ms
p99: 17.29 ± 0.01ms
Peak RAM: 69.000MB
ops: 119.16 ± 0.06 ops/s. best: 119.22ops/s.
total: 2098.08 ± 1.10ms. best: 2096.95ms.
avg: 8.39 ± 0.00ms
min: 4.95 ± 0.01ms
max: 11.02 ± 0.01ms
p99: 10.85 ± 0.02ms
250 trips, 5 coordinates
ops: 76.55 ± 0.02 ops/s. best: 76.59ops/s.
total: 3265.84 ± 0.78ms. best: 3264.01ms.
avg: 13.06 ± 0.00ms
min: 9.04 ± 0.01ms
max: 16.06 ± 0.02ms
p99: 15.76 ± 0.02ms
Peak RAM: 69.000MB
638.512ms
0.638512ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
782.633ms
0.782633ms/req
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
245.606ms
0.245606ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
216.836ms
0.216836ms/req
623.853ms
0.623853ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
770.272ms
0.770272ms/req
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
235.338ms
0.235338ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
211.587ms
0.211587ms/req
809.321ms
0.809321ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
1040.37ms
1.04037ms/req
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
414.188ms
0.414188ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
461.797ms
0.461797ms/req
743.188ms
0.743188ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
955.058ms
0.955058ms/req
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
349.408ms
0.349408ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
378.145ms
0.378145ms/req
227.362ms -> 0.0227362 ms/query
10 results:
258.204ms -> 0.0258204 ms/query
227.214ms -> 0.0227214 ms/query
10 results:
257.99ms -> 0.025799 ms/query