From ddd09f528bc80c6f465470e70e171c5ada5e3693 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 13 May 2024 13:01:08 +0800 Subject: [PATCH] boardd: Improve performance of `can_list_to_can_capnp()` (#32356) old-commit-hash: e548742701bac60f872ee4a1043b014e1ae00731 --- selfdrive/boardd/boardd_api_impl.pyx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/selfdrive/boardd/boardd_api_impl.pyx b/selfdrive/boardd/boardd_api_impl.pyx index 6a552bb447..cbac8cc5a3 100644 --- a/selfdrive/boardd/boardd_api_impl.pyx +++ b/selfdrive/boardd/boardd_api_impl.pyx @@ -15,16 +15,17 @@ cdef extern from "can_list_to_can_capnp.cc": void can_list_to_can_capnp_cpp(const vector[can_frame] &can_list, string &out, bool sendCan, bool valid) def can_list_to_can_capnp(can_msgs, msgtype='can', valid=True): + cdef can_frame *f cdef vector[can_frame] can_list - can_list.reserve(len(can_msgs)) - cdef can_frame f + can_list.reserve(len(can_msgs)) for can_msg in can_msgs: + f = &(can_list.emplace_back()) f.address = can_msg[0] f.busTime = can_msg[1] f.dat = can_msg[2] f.src = can_msg[3] - can_list.push_back(f) + cdef string out can_list_to_can_capnp_cpp(can_list, out, msgtype == 'sendcan', valid) return out