Skip to content
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 Link Time Optimisation whenever possible #6967

Merged
merged 41 commits into from
Jun 30, 2024
Merged

Use Link Time Optimisation whenever possible #6967

merged 41 commits into from
Jun 30, 2024

Conversation

SiarheiFedartsou
Copy link
Member

@SiarheiFedartsou SiarheiFedartsou commented Jun 22, 2024

Initially I wanted to enable it by default, but I faced a lot of issues while trying to make it working on all CI jobs, so I decided to enable it only on "release" jobs, i.e. ones which produce NodeJS binaries + on benchmarks job.

Benchmark Results

Benchmark Base PR
alias aliased u32: 1046.01
plain u32: 1082.19
aliased double: 1082.65
plain double: 1140.65
aliased u32: 1062.51
plain u32: 1056.07
aliased double: 932.948
plain double: 894.062
e2e_match_ch Ops: 47.14 ± 0.14 ops/s. Best: 47.40 ops/s
Total: 2778.84ms ± 8.56ms. Best: 2763.82ms
Min time: 2.05ms ± 0.05ms
Mean time: 21.21ms ± 0.07ms
Median time: 16.20ms ± 0.14ms
95th percentile: 68.12ms ± 0.76ms
99th percentile: 83.23ms ± 0.41ms
Max time: 92.18ms ± 1.00ms
Ops: 47.21 ± 0.16 ops/s. Best: 47.54 ops/s
Total: 2774.40ms ± 9.48ms. Best: 2755.36ms
Min time: 2.10ms ± 0.06ms
Mean time: 21.18ms ± 0.07ms
Median time: 16.83ms ± 0.15ms
95th percentile: 68.03ms ± 0.61ms
99th percentile: 81.90ms ± 0.97ms
Max time: 88.16ms ± 1.65ms
e2e_match_mld Ops: 62.88 ± 0.22 ops/s. Best: 63.34 ops/s
Total: 2083.78ms ± 7.47ms. Best: 2068.19ms
Min time: 1.74ms ± 0.06ms
Mean time: 15.90ms ± 0.06ms
Median time: 8.26ms ± 0.11ms
95th percentile: 52.69ms ± 0.50ms
99th percentile: 60.03ms ± 0.64ms
Max time: 70.17ms ± 1.00ms
Ops: 66.77 ± 0.23 ops/s. Best: 67.01 ops/s
Total: 1961.62ms ± 6.80ms. Best: 1954.98ms
Min time: 1.74ms ± 0.03ms
Mean time: 14.98ms ± 0.05ms
Median time: 8.04ms ± 0.08ms
95th percentile: 49.47ms ± 0.44ms
99th percentile: 56.92ms ± 0.82ms
Max time: 67.10ms ± 0.96ms
e2e_nearest_ch Ops: 820.87 ± 7.22 ops/s. Best: 828.65 ops/s
Total: 1218.44ms ± 10.82ms. Best: 1206.79ms
Min time: 0.98ms ± 0.01ms
Mean time: 1.22ms ± 0.01ms
Median time: 1.14ms ± 0.01ms
95th percentile: 1.63ms ± 0.01ms
99th percentile: 1.68ms ± 0.02ms
Max time: 3.86ms ± 2.10ms
Ops: 826.89 ± 9.30 ops/s. Best: 842.79 ops/s
Total: 1209.43ms ± 14.51ms. Best: 1186.54ms
Min time: 0.98ms ± 0.01ms
Mean time: 1.21ms ± 0.02ms
Median time: 1.13ms ± 0.01ms
95th percentile: 1.61ms ± 0.01ms
99th percentile: 1.67ms ± 0.02ms
Max time: 3.90ms ± 2.11ms
e2e_nearest_mld Ops: 817.03 ± 6.41 ops/s. Best: 827.38 ops/s
Total: 1223.57ms ± 9.25ms. Best: 1208.63ms
Min time: 0.99ms ± 0.01ms
Mean time: 1.22ms ± 0.01ms
Median time: 1.14ms ± 0.01ms
95th percentile: 1.63ms ± 0.01ms
99th percentile: 1.69ms ± 0.02ms
Max time: 4.14ms ± 2.43ms
Ops: 818.24 ± 3.30 ops/s. Best: 823.95 ops/s
Total: 1222.30ms ± 4.78ms. Best: 1213.66ms
Min time: 0.99ms ± 0.01ms
Mean time: 1.22ms ± 0.00ms
Median time: 1.14ms ± 0.01ms
95th percentile: 1.62ms ± 0.01ms
99th percentile: 1.68ms ± 0.00ms
Max time: 4.31ms ± 2.51ms
e2e_route_ch Ops: 360.96 ± 3.42 ops/s. Best: 367.87 ops/s
Total: 2770.47ms ± 26.48ms. Best: 2718.32ms
Min time: 1.21ms ± 0.02ms
Mean time: 2.77ms ± 0.03ms
Median time: 2.79ms ± 0.03ms
95th percentile: 3.66ms ± 0.03ms
99th percentile: 4.04ms ± 0.05ms
Max time: 6.25ms ± 1.84ms
Ops: 367.12 ± 1.79 ops/s. Best: 370.85 ops/s
Total: 2724.57ms ± 13.26ms. Best: 2696.53ms
Min time: 1.21ms ± 0.04ms
Mean time: 2.72ms ± 0.01ms
Median time: 2.74ms ± 0.02ms
95th percentile: 3.60ms ± 0.04ms
99th percentile: 3.97ms ± 0.05ms
Max time: 6.23ms ± 1.75ms
e2e_route_mld Ops: 304.30 ± 1.42 ops/s. Best: 306.01 ops/s
Total: 3286.29ms ± 16.18ms. Best: 3267.85ms
Min time: 1.23ms ± 0.03ms
Mean time: 3.29ms ± 0.02ms
Median time: 3.32ms ± 0.02ms
95th percentile: 4.46ms ± 0.01ms
99th percentile: 4.91ms ± 0.05ms
Max time: 7.37ms ± 1.92ms
Ops: 307.85 ± 1.12 ops/s. Best: 309.36 ops/s
Total: 3248.62ms ± 11.85ms. Best: 3232.49ms
Min time: 1.22ms ± 0.02ms
Mean time: 3.25ms ± 0.01ms
Median time: 3.28ms ± 0.02ms
95th percentile: 4.41ms ± 0.02ms
99th percentile: 4.82ms ± 0.04ms
Max time: 7.01ms ± 1.59ms
e2e_table_ch Ops: 315.94 ± 1.60 ops/s. Best: 318.52 ops/s
Total: 3165.47ms ± 15.98ms. Best: 3139.54ms
Min time: 1.60ms ± 0.04ms
Mean time: 3.17ms ± 0.02ms
Median time: 3.16ms ± 0.02ms
95th percentile: 4.38ms ± 0.03ms
99th percentile: 4.72ms ± 0.06ms
Max time: 7.38ms ± 2.61ms
Ops: 317.92 ± 1.19 ops/s. Best: 319.83 ops/s
Total: 3145.81ms ± 11.64ms. Best: 3126.67ms
Min time: 1.59ms ± 0.02ms
Mean time: 3.15ms ± 0.01ms
Median time: 3.15ms ± 0.01ms
95th percentile: 4.35ms ± 0.03ms
99th percentile: 4.70ms ± 0.04ms
Max time: 6.98ms ± 2.24ms
e2e_table_mld Ops: 115.13 ± 0.29 ops/s. Best: 115.64 ops/s
Total: 8685.42ms ± 22.88ms. Best: 8647.75ms
Min time: 3.42ms ± 0.08ms
Mean time: 8.69ms ± 0.02ms
Median time: 8.65ms ± 0.04ms
95th percentile: 13.34ms ± 0.07ms
99th percentile: 14.14ms ± 0.10ms
Max time: 16.26ms ± 1.41ms
Ops: 116.44 ± 0.20 ops/s. Best: 116.82 ops/s
Total: 8589.06ms ± 14.89ms. Best: 8560.37ms
Min time: 3.46ms ± 0.11ms
Mean time: 8.59ms ± 0.01ms
Median time: 8.54ms ± 0.04ms
95th percentile: 13.13ms ± 0.06ms
99th percentile: 14.02ms ± 0.10ms
Max time: 16.17ms ± 1.62ms
e2e_trip_ch Ops: 101.42 ± 0.14 ops/s. Best: 101.57 ops/s
Total: 9859.95ms ± 12.83ms. Best: 9844.99ms
Min time: 1.52ms ± 0.16ms
Mean time: 9.86ms ± 0.01ms
Median time: 9.33ms ± 0.03ms
95th percentile: 17.57ms ± 0.08ms
99th percentile: 19.33ms ± 0.11ms
Max time: 20.81ms ± 0.07ms
Ops: 103.88 ± 0.24 ops/s. Best: 104.31 ops/s
Total: 9625.91ms ± 22.50ms. Best: 9587.11ms
Min time: 1.46ms ± 0.11ms
Mean time: 9.63ms ± 0.02ms
Median time: 9.12ms ± 0.02ms
95th percentile: 17.25ms ± 0.05ms
99th percentile: 18.60ms ± 0.09ms
Max time: 19.82ms ± 0.17ms
e2e_trip_mld Ops: 61.29 ± 0.16 ops/s. Best: 61.57 ops/s
Total: 16313.46ms ± 42.77ms. Best: 16240.65ms
Min time: 1.57ms ± 0.19ms
Mean time: 16.32ms ± 0.04ms
Median time: 15.88ms ± 0.03ms
95th percentile: 26.90ms ± 0.08ms
99th percentile: 28.67ms ± 0.17ms
Max time: 32.02ms ± 1.85ms
Ops: 62.60 ± 0.29 ops/s. Best: 62.97 ops/s
Total: 15974.19ms ± 75.13ms. Best: 15880.60ms
Min time: 1.45ms ± 0.17ms
Mean time: 15.97ms ± 0.08ms
Median time: 15.55ms ± 0.12ms
95th percentile: 26.33ms ± 0.15ms
99th percentile: 27.81ms ± 0.21ms
Max time: 31.13ms ± 2.15ms
json-render String: 6.40608ms
Stringstream: 9.76474ms
Vector: 6.06719ms
String: 5.80294ms
Stringstream: 9.39139ms
Vector: 6.26933ms
match_ch Default radius:
4.43682ms/req at 82 coordinate
0.0541076ms/coordinate
Radius 10m:
15.8013ms/req at 82 coordinate
0.192699ms/coordinate
Default radius:
4.45801ms/req at 82 coordinate
0.054366ms/coordinate
Radius 10m:
15.2671ms/req at 82 coordinate
0.186184ms/coordinate
match_mld Default radius:
3.30351ms/req at 82 coordinate
0.0402867ms/coordinate
Radius 10m:
11.2358ms/req at 82 coordinate
0.137022ms/coordinate
Default radius:
2.96238ms/req at 82 coordinate
0.0361265ms/coordinate
Radius 10m:
10.9574ms/req at 82 coordinate
0.133627ms/coordinate
osrm_contract Time: 96.62s Peak RAM: 201.29MB Time: 94.66s Peak RAM: 203.28MB
osrm_customize Time: 1.31s Peak RAM: 117.07MB Time: 1.29s Peak RAM: 116.73MB
osrm_extract Time: 11.68s Peak RAM: 413.35MB Time: 11.69s Peak RAM: 408.01MB
osrm_partition Time: 1.95s Peak RAM: 136.22MB Time: 1.91s Peak RAM: 133.41MB
packedvector random write:
std::vector 9571.13 ms
util::packed_vector 79499.5 ms
slowdown: 8.30618
random read:
std::vector 8173.47 ms
util::packed_vector 32434.6 ms
slowdown: 3.96828
random write:
std::vector 10507.4 ms
util::packed_vector 71922.8 ms
slowdown: 6.84494
random read:
std::vector 10770.4 ms
util::packed_vector 29695.8 ms
slowdown: 2.75717
random_match_ch 500 matches, default radius
ops: 226.34 ± 1.30 ops/s. best: 228.35ops/s.
total: 251.84 ± 1.45ms. best: 249.62ms.
avg: 4.42 ± 0.03ms
min: 0.15 ± 0.01ms
max: 24.66 ± 0.27ms
p99: 24.66 ± 0.27ms

500 matches, radius=10
ops: 68.15 ± 0.47 ops/s. best: 69.28ops/s.
total: 939.17 ± 6.47ms. best: 923.76ms.
avg: 14.67 ± 0.10ms
min: 0.15 ± 0.01ms
max: 234.98 ± 1.20ms
p99: 234.98 ± 1.20ms

500 matches, radius=20
ops: 16.17 ± 0.08 ops/s. best: 16.30ops/s.
total: 4019.82 ± 19.25ms. best: 3988.19ms.
avg: 61.84 ± 0.30ms
min: 0.28 ± 0.01ms
max: 1178.49 ± 5.37ms
p99: 1178.49 ± 5.37ms
500 matches, default radius
ops: 224.90 ± 1.86 ops/s. best: 227.81ops/s.
total: 253.46 ± 2.07ms. best: 250.21ms.
avg: 4.45 ± 0.04ms
min: 0.15 ± 0.01ms
max: 23.12 ± 0.33ms
p99: 23.12 ± 0.33ms

500 matches, radius=10
ops: 66.61 ± 0.41 ops/s. best: 67.42ops/s.
total: 960.81 ± 5.84ms. best: 949.29ms.
avg: 15.01 ± 0.09ms
min: 0.16 ± 0.01ms
max: 226.33 ± 1.48ms
p99: 226.33 ± 1.48ms

500 matches, radius=20
ops: 15.99 ± 0.05 ops/s. best: 16.09ops/s.
total: 4064.89 ± 12.91ms. best: 4040.73ms.
avg: 62.54 ± 0.20ms
min: 0.31 ± 0.01ms
max: 1158.33 ± 4.72ms
p99: 1158.33 ± 4.72ms
random_match_mld 500 matches, default radius
ops: 309.82 ± 1.95 ops/s. best: 312.38ops/s.
total: 183.99 ± 1.16ms. best: 182.47ms.
avg: 3.23 ± 0.02ms
min: 0.14 ± 0.00ms
max: 19.06 ± 0.36ms
p99: 19.06 ± 0.36ms

500 matches, radius=10
ops: 108.02 ± 0.46 ops/s. best: 108.68ops/s.
total: 592.49 ± 2.57ms. best: 588.87ms.
avg: 9.26 ± 0.04ms
min: 0.15 ± 0.00ms
max: 112.71 ± 1.70ms
p99: 112.71 ± 1.70ms

500 matches, radius=20
ops: 21.59 ± 0.08 ops/s. best: 21.70ops/s.
total: 3011.35 ± 11.74ms. best: 2995.48ms.
avg: 46.33 ± 0.18ms
min: 0.20 ± 0.01ms
max: 595.87 ± 5.77ms
p99: 595.87 ± 5.77ms
500 matches, default radius
ops: 321.06 ± 4.74 ops/s. best: 330.48ops/s.
total: 177.58 ± 2.60ms. best: 172.48ms.
avg: 3.12 ± 0.05ms
min: 0.14 ± 0.00ms
max: 18.41 ± 0.34ms
p99: 18.41 ± 0.34ms

500 matches, radius=10
ops: 115.17 ± 0.97 ops/s. best: 116.44ops/s.
total: 555.76 ± 4.70ms. best: 549.62ms.
avg: 8.68 ± 0.07ms
min: 0.15 ± 0.01ms
max: 106.49 ± 0.61ms
p99: 106.49 ± 0.61ms

500 matches, radius=20
ops: 23.08 ± 0.09 ops/s. best: 23.24ops/s.
total: 2815.81 ± 11.29ms. best: 2796.56ms.
avg: 43.32 ± 0.17ms
min: 0.19 ± 0.01ms
max: 556.04 ± 2.87ms
p99: 556.04 ± 2.87ms
random_nearest_ch 10000 nearest, number_of_results=1
ops: 24506.51 ± 186.30 ops/s. best: 24713.49ops/s.
total: 408.08 ± 3.09ms. best: 404.64ms.
avg: 0.04 ± 0.00ms
min: 0.01 ± 0.00ms
max: 0.15 ± 0.02ms
p99: 0.10 ± 0.00ms

10000 nearest, number_of_results=5
ops: 18932.33 ± 169.82 ops/s. best: 19136.38ops/s.
total: 528.26 ± 4.73ms. best: 522.56ms.
avg: 0.05 ± 0.00ms
min: 0.02 ± 0.00ms
max: 0.15 ± 0.00ms
p99: 0.11 ± 0.00ms

10000 nearest, number_of_results=10
ops: 14995.26 ± 50.54 ops/s. best: 15063.96ops/s.
total: 666.89 ± 2.25ms. best: 663.84ms.
avg: 0.07 ± 0.00ms
min: 0.03 ± 0.00ms
max: 0.18 ± 0.00ms
p99: 0.13 ± 0.00ms
10000 nearest, number_of_results=1
ops: 24366.64 ± 158.51 ops/s. best: 24610.10ops/s.
total: 410.42 ± 2.68ms. best: 406.34ms.
avg: 0.04 ± 0.00ms
min: 0.01 ± 0.00ms
max: 0.15 ± 0.02ms
p99: 0.10 ± 0.00ms

10000 nearest, number_of_results=5
ops: 18956.11 ± 153.19 ops/s. best: 19201.78ops/s.
total: 527.58 ± 4.25ms. best: 520.79ms.
avg: 0.05 ± 0.00ms
min: 0.02 ± 0.00ms
max: 0.15 ± 0.01ms
p99: 0.11 ± 0.00ms

10000 nearest, number_of_results=10
ops: 15267.55 ± 100.47 ops/s. best: 15462.02ops/s.
total: 655.03 ± 4.30ms. best: 646.75ms.
avg: 0.07 ± 0.00ms
min: 0.03 ± 0.00ms
max: 0.18 ± 0.00ms
p99: 0.13 ± 0.00ms
random_nearest_mld 10000 nearest, number_of_results=1
ops: 24436.26 ± 268.31 ops/s. best: 24922.99ops/s.
total: 409.29 ± 4.48ms. best: 401.24ms.
avg: 0.04 ± 0.00ms
min: 0.01 ± 0.00ms
max: 0.15 ± 0.02ms
p99: 0.10 ± 0.00ms

10000 nearest, number_of_results=5
ops: 19089.23 ± 67.90 ops/s. best: 19200.42ops/s.
total: 523.86 ± 1.89ms. best: 520.82ms.
avg: 0.05 ± 0.00ms
min: 0.02 ± 0.00ms
max: 0.15 ± 0.01ms
p99: 0.11 ± 0.00ms

10000 nearest, number_of_results=10
ops: 15126.00 ± 100.06 ops/s. best: 15265.11ops/s.
total: 661.15 ± 4.39ms. best: 655.09ms.
avg: 0.07 ± 0.00ms
min: 0.03 ± 0.00ms
max: 0.18 ± 0.00ms
p99: 0.13 ± 0.00ms
10000 nearest, number_of_results=1
ops: 24422.63 ± 271.63 ops/s. best: 24776.17ops/s.
total: 409.52 ± 4.57ms. best: 403.61ms.
avg: 0.04 ± 0.00ms
min: 0.01 ± 0.00ms
max: 0.15 ± 0.02ms
p99: 0.10 ± 0.00ms

10000 nearest, number_of_results=5
ops: 18712.77 ± 95.51 ops/s. best: 18818.73ops/s.
total: 534.41 ± 2.71ms. best: 531.39ms.
avg: 0.05 ± 0.00ms
min: 0.02 ± 0.00ms
max: 0.15 ± 0.00ms
p99: 0.11 ± 0.00ms

10000 nearest, number_of_results=10
ops: 15009.78 ± 169.28 ops/s. best: 15338.43ops/s.
total: 666.33 ± 6.94ms. best: 651.96ms.
avg: 0.07 ± 0.00ms
min: 0.03 ± 0.00ms
max: 0.18 ± 0.00ms
p99: 0.13 ± 0.00ms
random_route_ch 1000 routes, 3 coordinates, no alternatives, overview=full, steps=true
ops: 546.90 ± 1.36 ops/s. best: 549.11ops/s.
total: 1799.26 ± 4.46ms. best: 1792.00ms.
avg: 1.83 ± 0.00ms
min: 0.31 ± 0.01ms
max: 3.08 ± 0.18ms
p99: 2.66 ± 0.01ms

1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
ops: 642.95 ± 2.89 ops/s. best: 647.50ops/s.
total: 1555.37 ± 6.97ms. best: 1544.41ms.
avg: 1.56 ± 0.01ms
min: 0.05 ± 0.00ms
max: 4.49 ± 0.08ms
p99: 3.35 ± 0.02ms

1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
ops: 1114.95 ± 6.97 ops/s. best: 1129.87ops/s.
total: 882.60 ± 5.48ms. best: 870.90ms.
avg: 0.90 ± 0.01ms
min: 0.22 ± 0.01ms
max: 1.39 ± 0.03ms
p99: 1.26 ± 0.01ms

1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
ops: 1234.30 ± 2.73 ops/s. best: 1237.89ops/s.
total: 810.18 ± 1.79ms. best: 807.83ms.
avg: 0.81 ± 0.00ms
min: 0.04 ± 0.00ms
max: 3.66 ± 0.07ms
p99: 2.00 ± 0.01ms
1000 routes, 3 coordinates, no alternatives, overview=full, steps=true
ops: 553.86 ± 6.04 ops/s. best: 559.60ops/s.
total: 1776.93 ± 19.96ms. best: 1758.39ms.
avg: 1.81 ± 0.02ms
min: 0.31 ± 0.01ms
max: 3.05 ± 0.23ms
p99: 2.62 ± 0.07ms

1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
ops: 629.17 ± 1.68 ops/s. best: 631.46ops/s.
total: 1589.41 ± 4.23ms. best: 1583.63ms.
avg: 1.59 ± 0.00ms
min: 0.05 ± 0.00ms
max: 3.75 ± 0.07ms
p99: 3.49 ± 0.02ms

1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
ops: 1090.58 ± 7.65 ops/s. best: 1105.79ops/s.
total: 902.33 ± 6.28ms. best: 889.86ms.
avg: 0.92 ± 0.01ms
min: 0.22 ± 0.01ms
max: 1.45 ± 0.01ms
p99: 1.29 ± 0.02ms

1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
ops: 1154.01 ± 7.73 ops/s. best: 1163.73ops/s.
total: 866.60 ± 5.83ms. best: 859.31ms.
avg: 0.87 ± 0.01ms
min: 0.04 ± 0.00ms
max: 2.26 ± 0.13ms
p99: 2.08 ± 0.01ms
random_route_mld 1000 routes, 3 coordinates, no alternatives, overview=full, steps=true
ops: 268.52 ± 1.44 ops/s. best: 271.62ops/s.
total: 3664.63 ± 19.52ms. best: 3622.76ms.
avg: 3.72 ± 0.02ms
min: 0.32 ± 0.01ms
max: 8.24 ± 0.14ms
p99: 6.25 ± 0.09ms

1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
ops: 263.66 ± 0.78 ops/s. best: 265.56ops/s.
total: 3792.76 ± 11.09ms. best: 3765.58ms.
avg: 3.79 ± 0.01ms
min: 0.05 ± 0.00ms
max: 8.56 ± 0.12ms
p99: 7.69 ± 0.06ms

1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
ops: 356.70 ± 2.63 ops/s. best: 359.75ops/s.
total: 2758.84 ± 20.45ms. best: 2735.21ms.
avg: 2.80 ± 0.02ms
min: 0.28 ± 0.00ms
max: 6.99 ± 0.09ms
p99: 4.90 ± 0.05ms

1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
ops: 326.53 ± 0.76 ops/s. best: 327.50ops/s.
total: 3062.50 ± 7.02ms. best: 3053.48ms.
avg: 3.06 ± 0.01ms
min: 0.04 ± 0.00ms
max: 6.90 ± 0.24ms
p99: 6.09 ± 0.04ms
1000 routes, 3 coordinates, no alternatives, overview=full, steps=true
ops: 272.13 ± 2.02 ops/s. best: 275.16ops/s.
total: 3616.16 ± 27.03ms. best: 3576.14ms.
avg: 3.67 ± 0.03ms
min: 0.32 ± 0.01ms
max: 8.12 ± 0.18ms
p99: 6.12 ± 0.07ms

1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
ops: 266.38 ± 1.41 ops/s. best: 269.33ops/s.
total: 3754.22 ± 19.78ms. best: 3712.96ms.
avg: 3.75 ± 0.02ms
min: 0.05 ± 0.00ms
max: 8.50 ± 0.08ms
p99: 7.50 ± 0.09ms

1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
ops: 357.49 ± 1.74 ops/s. best: 361.34ops/s.
total: 2752.58 ± 13.31ms. best: 2723.19ms.
avg: 2.80 ± 0.01ms
min: 0.28 ± 0.00ms
max: 6.79 ± 0.15ms
p99: 4.80 ± 0.06ms

1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
ops: 328.97 ± 2.90 ops/s. best: 333.07ops/s.
total: 3040.06 ± 26.72ms. best: 3002.38ms.
avg: 3.04 ± 0.03ms
min: 0.04 ± 0.00ms
max: 6.66 ± 0.09ms
p99: 5.98 ± 0.07ms
random_table_ch 250 tables, 3 coordinates
ops: 1511.47 ± 28.35 ops/s. best: 1558.59ops/s.
total: 165.46 ± 3.07ms. best: 160.40ms.
avg: 0.66 ± 0.01ms
min: 0.43 ± 0.01ms
max: 1.00 ± 0.28ms
p99: 0.82 ± 0.03ms

250 tables, 25 coordinates
ops: 179.77 ± 1.15 ops/s. best: 181.91ops/s.
total: 1390.74 ± 8.84ms. best: 1374.32ms.
avg: 5.56 ± 0.04ms
min: 4.82 ± 0.06ms
max: 6.22 ± 0.06ms
p99: 6.14 ± 0.04ms

250 tables, 50 coordinates
ops: 88.14 ± 0.69 ops/s. best: 89.11ops/s.
total: 2836.59 ± 22.28ms. best: 2805.54ms.
avg: 11.35 ± 0.09ms
min: 10.20 ± 0.18ms
max: 12.50 ± 0.14ms
p99: 12.29 ± 0.06ms
250 tables, 3 coordinates
ops: 1480.31 ± 12.95 ops/s. best: 1501.85ops/s.
total: 168.90 ± 1.47ms. best: 166.46ms.
avg: 0.68 ± 0.01ms
min: 0.48 ± 0.02ms
max: 1.01 ± 0.21ms
p99: 0.84 ± 0.02ms

250 tables, 25 coordinates
ops: 176.25 ± 1.67 ops/s. best: 178.16ops/s.
total: 1418.63 ± 13.36ms. best: 1403.20ms.
avg: 5.67 ± 0.05ms
min: 4.97 ± 0.10ms
max: 6.67 ± 0.30ms
p99: 6.29 ± 0.02ms

250 tables, 50 coordinates
ops: 86.19 ± 0.62 ops/s. best: 86.96ops/s.
total: 2900.64 ± 20.85ms. best: 2874.94ms.
avg: 11.60 ± 0.08ms
min: 10.47 ± 0.11ms
max: 12.71 ± 0.08ms
p99: 12.52 ± 0.12ms
random_table_mld 250 tables, 3 coordinates
ops: 360.27 ± 2.99 ops/s. best: 364.79ops/s.
total: 693.99 ± 5.76ms. best: 685.33ms.
avg: 2.78 ± 0.02ms
min: 2.14 ± 0.03ms
max: 3.82 ± 0.07ms
p99: 3.69 ± 0.05ms

250 tables, 25 coordinates
ops: 39.35 ± 0.15 ops/s. best: 39.65ops/s.
total: 6352.76 ± 23.40ms. best: 6304.84ms.
avg: 25.41 ± 0.09ms
min: 22.52 ± 0.18ms
max: 29.19 ± 0.26ms
p99: 28.23 ± 0.10ms

250 tables, 50 coordinates
ops: 18.44 ± 0.06 ops/s. best: 18.52ops/s.
total: 13554.23 ± 42.49ms. best: 13495.54ms.
avg: 54.22 ± 0.17ms
min: 49.45 ± 0.36ms
max: 59.04 ± 0.23ms
p99: 58.27 ± 0.20ms
250 tables, 3 coordinates
ops: 356.20 ± 0.37 ops/s. best: 356.63ops/s.
total: 701.85 ± 0.74ms. best: 701.01ms.
avg: 2.81 ± 0.00ms
min: 2.25 ± 0.01ms
max: 3.86 ± 0.05ms
p99: 3.70 ± 0.04ms

250 tables, 25 coordinates
ops: 39.72 ± 0.21 ops/s. best: 39.96ops/s.
total: 6294.00 ± 34.77ms. best: 6255.54ms.
avg: 25.18 ± 0.14ms
min: 22.24 ± 0.19ms
max: 30.52 ± 2.89ms
p99: 28.12 ± 0.47ms

250 tables, 50 coordinates
ops: 18.63 ± 0.05 ops/s. best: 18.70ops/s.
total: 13422.07 ± 34.56ms. best: 13368.11ms.
avg: 53.69 ± 0.14ms
min: 49.07 ± 0.64ms
max: 58.04 ± 0.17ms
p99: 57.69 ± 0.13ms
random_trip_ch 250 trips, 3 coordinates
ops: 515.21 ± 5.41 ops/s. best: 522.62ops/s.
total: 485.31 ± 5.42ms. best: 478.36ms.
avg: 1.94 ± 0.02ms
min: 1.19 ± 0.01ms
max: 2.76 ± 0.44ms
p99: 2.49 ± 0.08ms

250 trips, 5 coordinates
ops: 343.53 ± 3.94 ops/s. best: 349.74ops/s.
total: 727.84 ± 8.30ms. best: 714.82ms.
avg: 2.91 ± 0.03ms
min: 1.93 ± 0.03ms
max: 3.63 ± 0.06ms
p99: 3.55 ± 0.04ms
250 trips, 3 coordinates
ops: 520.06 ± 2.80 ops/s. best: 524.81ops/s.
total: 480.73 ± 2.54ms. best: 476.36ms.
avg: 1.92 ± 0.01ms
min: 1.15 ± 0.04ms
max: 2.87 ± 0.40ms
p99: 2.43 ± 0.06ms

250 trips, 5 coordinates
ops: 352.60 ± 4.02 ops/s. best: 357.92ops/s.
total: 709.14 ± 8.75ms. best: 698.47ms.
avg: 2.84 ± 0.03ms
min: 1.82 ± 0.05ms
max: 3.53 ± 0.06ms
p99: 3.44 ± 0.02ms
random_trip_mld 250 trips, 3 coordinates
ops: 183.22 ± 1.02 ops/s. best: 184.58ops/s.
total: 1364.50 ± 8.05ms. best: 1354.43ms.
avg: 5.46 ± 0.03ms
min: 3.56 ± 0.07ms
max: 7.27 ± 0.30ms
p99: 7.01 ± 0.05ms

250 trips, 5 coordinates
ops: 119.34 ± 1.03 ops/s. best: 121.06ops/s.
total: 2094.99 ± 18.13ms. best: 2065.08ms.
avg: 8.38 ± 0.07ms
min: 5.99 ± 0.11ms
max: 10.53 ± 0.13ms
p99: 10.16 ± 0.03ms
250 trips, 3 coordinates
ops: 184.51 ± 1.59 ops/s. best: 187.13ops/s.
total: 1355.04 ± 11.61ms. best: 1335.97ms.
avg: 5.42 ± 0.05ms
min: 3.57 ± 0.03ms
max: 8.10 ± 0.81ms
p99: 7.39 ± 0.69ms

250 trips, 5 coordinates
ops: 121.14 ± 0.66 ops/s. best: 122.07ops/s.
total: 2063.85 ± 11.39ms. best: 2048.02ms.
avg: 8.26 ± 0.05ms
min: 5.95 ± 0.03ms
max: 10.05 ± 0.20ms
p99: 9.82 ± 0.10ms
route_ch 1000 routes, 3 coordinates, no alternatives, overview=full, steps=true
434.115ms
0.434115ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
514.962ms
0.514962ms/req
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
154.627ms
0.154627ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
139.31ms
0.13931ms/req
1000 routes, 3 coordinates, no alternatives, overview=full, steps=true
393.181ms
0.393181ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
483.857ms
0.483857ms/req
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
143.004ms
0.143004ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
123.922ms
0.123922ms/req
route_mld 1000 routes, 3 coordinates, no alternatives, overview=full, steps=true
571.928ms
0.571928ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
719.58ms
0.71958ms/req
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
269.484ms
0.269484ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
302.036ms
0.302036ms/req
1000 routes, 3 coordinates, no alternatives, overview=full, steps=true
541.252ms
0.541252ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=full, steps=true
671.912ms
0.671912ms/req
1000 routes, 3 coordinates, no alternatives, overview=false, steps=false
254.037ms
0.254037ms/req
1000 routes, 2 coordinates, 3 alternatives, overview=false, steps=false
281.222ms
0.281222ms/req
rtree 1 result:
197.485ms -> 0.0197485 ms/query
10 results:
232.122ms -> 0.0232122 ms/query
1 result:
190.984ms -> 0.0190984 ms/query
10 results:
230.932ms -> 0.0230932 ms/query

@SiarheiFedartsou SiarheiFedartsou changed the title Use LTO by default Use Link Time Optimisation for Release builds Jun 25, 2024
@SiarheiFedartsou SiarheiFedartsou changed the title Use Link Time Optimisation for Release builds Use Link Time Optimisation for NodeJS builds Jun 25, 2024
@@ -31,7 +31,7 @@ RUN NPROC=${BUILD_CONCURRENCY:-$(nproc)} && \
case ${DOCKER_TAG} in *"-debug"*) BUILD_TYPE="Debug";; esac && \
case ${DOCKER_TAG} in *"-assertions"*) BUILD_TYPE="RelWithDebInfo" && ENABLE_ASSERTIONS="On" && BUILD_TOOLS="On";; esac && \
echo "Building ${BUILD_TYPE} with ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} BUILD_TOOLS=${BUILD_TOOLS}" && \
cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS} -DBUILD_TOOLS=${BUILD_TOOLS} -DENABLE_LTO=On && \
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alpine cannot build it with LTO: it was always like this. We just had no error if LTO is not available before.

@SiarheiFedartsou SiarheiFedartsou marked this pull request as ready for review June 25, 2024 21:05
Copy link
Collaborator

@DennisOSRM DennisOSRM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. How about making it the default? The few platforms that don't support it may disable it explicitly. Or is LTO support still not widespread enough?

@SiarheiFedartsou
Copy link
Member Author

Looks good. How about making it the default? The few platforms that don't support it may disable it explicitly. Or is LTO support still not widespread enough?

Well, "few platforms" in our case is ~50% of our CI jobs if I remember correctly 😄 But in general we indeed can make it default and just disable it on jobs where it doesn't work yet - in general it should be possible to make it working anywhere...

@SiarheiFedartsou SiarheiFedartsou changed the title Use Link Time Optimisation for NodeJS builds Use Link Time Optimisation whenever possible Jun 29, 2024
@SiarheiFedartsou SiarheiFedartsou merged commit d0ed29a into master Jun 30, 2024
21 checks passed
@SiarheiFedartsou SiarheiFedartsou deleted the sf-lto2 branch June 30, 2024 19:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants