Skip to content

Commit

Permalink
faster cython loop
Browse files Browse the repository at this point in the history
  • Loading branch information
deanlee committed Mar 29, 2024
1 parent 2f254fa commit 2333bc7
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions selfdrive/boardd/boardd_api_impl.pyx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# distutils: language = c++
# cython: language_level=3
from cython.operator cimport dereference as deref, preincrement as preinc
from libcpp.vector cimport vector
from libcpp.string cimport string
from libcpp cimport bool
Expand Down Expand Up @@ -45,7 +46,11 @@ def can_capnp_to_list(strings, sendcan=False):
cdef vector[CanData] data
can_capnp_to_can_list_cpp(strings, data, sendcan)
result = []
for c in data:
frames = [[f.address, 0, f.dat, f.src] for f in c.frames]
result.append([c.nanos, frames])
cdef vector[CanData].iterator it = data.begin()
cdef CanData *d
while it != data.end():
d = &deref(it)
frames = [[f.address, 0, (<char *>&f.dat[0])[:f.dat.size()], f.src] for f in d.frames]
result.append([d.nanos, frames])
preinc(it)
return result

0 comments on commit 2333bc7

Please sign in to comment.