Skip to content

Commit d5ab664

Browse files
wip
1 parent 5b69c0a commit d5ab664

File tree

3 files changed

+76
-69
lines changed

3 files changed

+76
-69
lines changed

include/util/json_container.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ using Value = std::variant<String, Number, Object, Array, True, False, Null>;
104104
*/
105105
struct Object
106106
{
107-
std::unordered_map<std::string, Value> values;
107+
std::unordered_map<std::string_view, Value> values;
108108
};
109109

110110
/**

scripts/ci/run_benchmarks.sh

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -54,80 +54,80 @@ function run_benchmarks_for_folder {
5454

5555
BENCHMARKS_FOLDER="$BINARIES_FOLDER/src/benchmarks"
5656

57-
# echo "Running match-bench MLD"
58-
# $BENCHMARKS_FOLDER/match-bench "$FOLDER/test/data/mld/monaco.osrm" mld > "$RESULTS_FOLDER/match_mld.bench"
59-
# echo "Running match-bench CH"
60-
# $BENCHMARKS_FOLDER/match-bench "$FOLDER/test/data/ch/monaco.osrm" ch > "$RESULTS_FOLDER/match_ch.bench"
61-
# echo "Running route-bench MLD"
62-
# $BENCHMARKS_FOLDER/route-bench "$FOLDER/test/data/mld/monaco.osrm" mld > "$RESULTS_FOLDER/route_mld.bench"
63-
# echo "Running route-bench CH"
64-
# $BENCHMARKS_FOLDER/route-bench "$FOLDER/test/data/ch/monaco.osrm" ch > "$RESULTS_FOLDER/route_ch.bench"
65-
# echo "Running alias"
66-
# $BENCHMARKS_FOLDER/alias-bench > "$RESULTS_FOLDER/alias.bench"
67-
# echo "Running json-render-bench"
57+
echo "Running match-bench MLD"
58+
$BENCHMARKS_FOLDER/match-bench "$FOLDER/test/data/mld/monaco.osrm" mld > "$RESULTS_FOLDER/match_mld.bench"
59+
echo "Running match-bench CH"
60+
$BENCHMARKS_FOLDER/match-bench "$FOLDER/test/data/ch/monaco.osrm" ch > "$RESULTS_FOLDER/match_ch.bench"
61+
echo "Running route-bench MLD"
62+
$BENCHMARKS_FOLDER/route-bench "$FOLDER/test/data/mld/monaco.osrm" mld > "$RESULTS_FOLDER/route_mld.bench"
63+
echo "Running route-bench CH"
64+
$BENCHMARKS_FOLDER/route-bench "$FOLDER/test/data/ch/monaco.osrm" ch > "$RESULTS_FOLDER/route_ch.bench"
65+
echo "Running alias"
66+
$BENCHMARKS_FOLDER/alias-bench > "$RESULTS_FOLDER/alias.bench"
67+
echo "Running json-render-bench"
6868
$BENCHMARKS_FOLDER/json-render-bench "$FOLDER/test/data/portugal_to_korea.json" #> "$RESULTS_FOLDER/json-render.bench"
6969
echo "Running packedvector-bench"
70-
# $BENCHMARKS_FOLDER/packedvector-bench > "$RESULTS_FOLDER/packedvector.bench"
71-
# echo "Running rtree-bench"
72-
# $BENCHMARKS_FOLDER/rtree-bench "$FOLDER/test/data/monaco.osrm.ramIndex" "$FOLDER/test/data/monaco.osrm.fileIndex" "$FOLDER/test/data/monaco.osrm.nbg_nodes" > "$RESULTS_FOLDER/rtree.bench"
70+
$BENCHMARKS_FOLDER/packedvector-bench > "$RESULTS_FOLDER/packedvector.bench"
71+
echo "Running rtree-bench"
72+
$BENCHMARKS_FOLDER/rtree-bench "$FOLDER/test/data/monaco.osrm.ramIndex" "$FOLDER/test/data/monaco.osrm.fileIndex" "$FOLDER/test/data/monaco.osrm.nbg_nodes" > "$RESULTS_FOLDER/rtree.bench"
7373

7474
cp -rf $OSM_PBF $FOLDER/data.osm.pbf
7575

7676
echo "Running osrm-extract"
7777
measure_peak_ram_and_time "$BINARIES_FOLDER/osrm-extract -p $FOLDER/profiles/car.lua $FOLDER/data.osm.pbf" "$RESULTS_FOLDER/osrm_extract.bench"
78-
# # echo "Running osrm-partition"
79-
# measure_peak_ram_and_time "$BINARIES_FOLDER/osrm-partition $FOLDER/data.osrm" "$RESULTS_FOLDER/osrm_partition.bench"
80-
# echo "Running osrm-customize"
81-
# measure_peak_ram_and_time "$BINARIES_FOLDER/osrm-customize $FOLDER/data.osrm" "$RESULTS_FOLDER/osrm_customize.bench"
82-
# echo "Running osrm-contract"
83-
# measure_peak_ram_and_time "$BINARIES_FOLDER/osrm-contract $FOLDER/data.osrm" "$RESULTS_FOLDER/osrm_contract.bench"
84-
85-
86-
# for ALGORITHM in ch mld; do
87-
# for BENCH in nearest table trip route match; do
88-
# echo "Running node $BENCH $ALGORITHM"
89-
# START=$(date +%s.%N)
90-
# node $SCRIPTS_FOLDER/scripts/ci/bench.js $FOLDER/lib/binding/node_osrm.node $FOLDER/data.osrm $ALGORITHM $BENCH $GPS_TRACES > "$RESULTS_FOLDER/node_${BENCH}_${ALGORITHM}.bench" 5
91-
# END=$(date +%s.%N)
92-
# DIFF=$(echo "$END - $START" | bc)
93-
# echo "Took: ${DIFF}s"
94-
# done
95-
# done
96-
97-
# for ALGORITHM in ch mld; do
98-
# for BENCH in nearest table trip route match; do
99-
# echo "Running random $BENCH $ALGORITHM"
100-
# START=$(date +%s.%N)
101-
# $BENCHMARKS_FOLDER/bench "$FOLDER/data.osrm" $ALGORITHM $GPS_TRACES ${BENCH} > "$RESULTS_FOLDER/random_${BENCH}_${ALGORITHM}.bench" 5 || true
102-
# END=$(date +%s.%N)
103-
# DIFF=$(echo "$END - $START" | bc)
104-
# echo "Took: ${DIFF}s"
105-
# done
106-
# done
107-
108-
109-
# for ALGORITHM in ch mld; do
110-
# $BINARIES_FOLDER/osrm-routed --algorithm $ALGORITHM $FOLDER/data.osrm > /dev/null 2>&1 &
111-
# OSRM_ROUTED_PID=$!
112-
113-
# # wait for osrm-routed to start
114-
# if ! curl --retry-delay 3 --retry 10 --retry-all-errors "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true" > /dev/null 2>&1; then
115-
# echo "osrm-routed failed to start for algorithm $ALGORITHM"
116-
# kill -9 $OSRM_ROUTED_PID
117-
# continue
118-
# fi
119-
120-
# for METHOD in route nearest trip table match; do
121-
# echo "Running e2e benchmark for $METHOD $ALGORITHM"
122-
# START=$(date +%s.%N)
123-
# python3 $SCRIPTS_FOLDER/scripts/ci/e2e_benchmark.py --host http://localhost:5000 --method $METHOD --iterations 5 --num_requests 1000 --gps_traces_file_path $GPS_TRACES > $RESULTS_FOLDER/e2e_${METHOD}_${ALGORITHM}.bench
124-
# END=$(date +%s.%N)
125-
# DIFF=$(echo "$END - $START" | bc)
126-
# echo "Took: ${DIFF}s"
127-
# done
128-
129-
# kill -9 $OSRM_ROUTED_PID
130-
# done
78+
echo "Running osrm-partition"
79+
measure_peak_ram_and_time "$BINARIES_FOLDER/osrm-partition $FOLDER/data.osrm" "$RESULTS_FOLDER/osrm_partition.bench"
80+
echo "Running osrm-customize"
81+
measure_peak_ram_and_time "$BINARIES_FOLDER/osrm-customize $FOLDER/data.osrm" "$RESULTS_FOLDER/osrm_customize.bench"
82+
echo "Running osrm-contract"
83+
measure_peak_ram_and_time "$BINARIES_FOLDER/osrm-contract $FOLDER/data.osrm" "$RESULTS_FOLDER/osrm_contract.bench"
84+
85+
86+
for ALGORITHM in ch mld; do
87+
for BENCH in nearest table trip route match; do
88+
echo "Running node $BENCH $ALGORITHM"
89+
START=$(date +%s.%N)
90+
node $SCRIPTS_FOLDER/scripts/ci/bench.js $FOLDER/lib/binding/node_osrm.node $FOLDER/data.osrm $ALGORITHM $BENCH $GPS_TRACES > "$RESULTS_FOLDER/node_${BENCH}_${ALGORITHM}.bench" 5
91+
END=$(date +%s.%N)
92+
DIFF=$(echo "$END - $START" | bc)
93+
echo "Took: ${DIFF}s"
94+
done
95+
done
96+
97+
for ALGORITHM in ch mld; do
98+
for BENCH in nearest table trip route match; do
99+
echo "Running random $BENCH $ALGORITHM"
100+
START=$(date +%s.%N)
101+
$BENCHMARKS_FOLDER/bench "$FOLDER/data.osrm" $ALGORITHM $GPS_TRACES ${BENCH} > "$RESULTS_FOLDER/random_${BENCH}_${ALGORITHM}.bench" 5 || true
102+
END=$(date +%s.%N)
103+
DIFF=$(echo "$END - $START" | bc)
104+
echo "Took: ${DIFF}s"
105+
done
106+
done
107+
108+
109+
for ALGORITHM in ch mld; do
110+
$BINARIES_FOLDER/osrm-routed --algorithm $ALGORITHM $FOLDER/data.osrm > /dev/null 2>&1 &
111+
OSRM_ROUTED_PID=$!
112+
113+
# wait for osrm-routed to start
114+
if ! curl --retry-delay 3 --retry 10 --retry-all-errors "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true" > /dev/null 2>&1; then
115+
echo "osrm-routed failed to start for algorithm $ALGORITHM"
116+
kill -9 $OSRM_ROUTED_PID
117+
continue
118+
fi
119+
120+
for METHOD in route nearest trip table match; do
121+
echo "Running e2e benchmark for $METHOD $ALGORITHM"
122+
START=$(date +%s.%N)
123+
python3 $SCRIPTS_FOLDER/scripts/ci/e2e_benchmark.py --host http://localhost:5000 --method $METHOD --iterations 5 --num_requests 1000 --gps_traces_file_path $GPS_TRACES > $RESULTS_FOLDER/e2e_${METHOD}_${ALGORITHM}.bench
124+
END=$(date +%s.%N)
125+
DIFF=$(echo "$END - $START" | bc)
126+
echo "Took: ${DIFF}s"
127+
done
128+
129+
kill -9 $OSRM_ROUTED_PID
130+
done
131131
}
132132

133133
run_benchmarks_for_folder

src/benchmarks/json_render.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,17 @@
99
#include <rapidjson/document.h>
1010
#include <sstream>
1111
#include <stdexcept>
12+
#include <unordered_set>
1213

1314
using namespace osrm;
1415

1516
namespace
1617
{
1718

19+
// we use std::string_view as a key in the object, so since here we have dynamic keys we have to "hold" them somewhere
20+
// okay for tests...
21+
static std::unordered_set<std::string> gKeysHolder;
22+
1823
void convert(const rapidjson::Value &value, json::Value &result)
1924
{
2025
if (value.IsString())
@@ -32,7 +37,8 @@ void convert(const rapidjson::Value &value, json::Value &result)
3237
{
3338
json::Value member;
3439
convert(itr->value, member);
35-
object.values.emplace(itr->name.GetString(), std::move(member));
40+
auto keyItr = gKeysHolder.emplace(itr->name.GetString()).first;
41+
object.values.emplace(*keyItr, std::move(member));;
3642
}
3743
result = std::move(object);
3844
}
@@ -125,6 +131,7 @@ int main(int argc, char **argv)
125131

126132
if (std::string{out_vec.begin(), out_vec.end()} != out_str || out_str != out_ss_str)
127133
{
134+
std::cerr << "Vector/string results are not equal\n";
128135
throw std::logic_error("Vector/stringstream/string results are not equal");
129136
}
130137
return EXIT_SUCCESS;

0 commit comments

Comments
 (0)