From 5ea1a3f7788dfb9cfb9ce131d6a8cc1b2f5fe35d Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sun, 11 Jun 2023 23:28:30 +0800 Subject: [PATCH] replay: Improve the performance of the log parser (#28495) old-commit-hash: 3a3e38e42591457f8e4a97a8559b9274d057880a --- tools/replay/logreader.cc | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/tools/replay/logreader.cc b/tools/replay/logreader.cc index e3d5071412..3313e11d40 100644 --- a/tools/replay/logreader.cc +++ b/tools/replay/logreader.cc @@ -68,20 +68,16 @@ bool LogReader::parse(const std::set &allow, std::atomic words((const capnp::word *)raw_.data(), raw_.size() / sizeof(capnp::word)); while (words.size() > 0 && !(abort && *abort)) { - if (!allow.empty()) { - capnp::FlatArrayMessageReader reader(words); - auto which = reader.getRoot().which(); - if (allow.find(which) == allow.end()) { - words = kj::arrayPtr(reader.getEnd(), words.end()); - continue; - } - } - #ifdef HAS_MEMORY_RESOURCE Event *evt = new (mbr_) Event(words); #else Event *evt = new Event(words); #endif + if (!allow.empty() && allow.find(evt->which) == allow.end()) { + delete evt; + words = kj::arrayPtr(evt->reader.getEnd(), words.end()); + continue; + } // Add encodeIdx packet again as a frame packet for the video stream if (evt->which == cereal::Event::ROAD_ENCODE_IDX ||