@@ -36,8 +36,13 @@ madrona_gpudrive::Map *copyToArrayOnHostOrDevice(const madrona_gpudrive::Map *in
3636
3737namespace madrona_gpudrive {
3838
39- MapReader::MapReader (const std::string &pathToFile) : in_(pathToFile) {
40- assert (in_.is_open ());
39+ simdjson::dom::parser& MapReader::getParser () {
40+ static simdjson::dom::parser parser;
41+ return parser;
42+ }
43+
44+ MapReader::MapReader (const std::string &pathToFile){
45+ in_ = pathToFile;
4146 map_ = new madrona_gpudrive::Map ();
4247}
4348
@@ -46,10 +51,13 @@ MapReader::~MapReader() {
4651}
4752
4853void MapReader::doParse (float polylineReductionThreshold) {
49- nlohmann::json rawJson;
50- in_ >> rawJson;
54+ // Parse with simdjson
55+ auto & parser = getParser ();
56+ simdjson::dom::element doc;
57+ auto error = parser.load (in_).get (doc);
5158
52- from_json (rawJson, *map_, polylineReductionThreshold);
59+ // Parse the document into the map
60+ from_json (doc, *map_, polylineReductionThreshold);
5361}
5462
5563madrona_gpudrive::Map* MapReader::parseAndWriteOut (const std::string &path,
@@ -60,4 +68,4 @@ madrona_gpudrive::Map* MapReader::parseAndWriteOut(const std::string &path,
6068 return copyToArrayOnHostOrDevice (reader.map_ , executionMode);
6169
6270}
63- } // namespace madrona_gpudrive
71+ } // namespace madrona_gpudrive
0 commit comments