From c10a241dc5e889fd58323789dc4af45ec1e5616a Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 3 Nov 2022 10:01:26 +0100 Subject: [PATCH] feat: speed up marshaller by pre-packing bools (#139) --- src/dbus_fast/_private/marshaller.pxd | 5 ++++- src/dbus_fast/_private/marshaller.py | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/dbus_fast/_private/marshaller.pxd b/src/dbus_fast/_private/marshaller.pxd index 7ac3aaf..6995d68 100644 --- a/src/dbus_fast/_private/marshaller.pxd +++ b/src/dbus_fast/_private/marshaller.pxd @@ -3,9 +3,12 @@ import cython -cdef bytes PACKED_UINT32_ZERO cdef object PACK_UINT32 +cdef bytes PACKED_UINT32_ZERO +cdef bytes PACKED_BOOL_TRUE +cdef bytes PACKED_BOOL_FALSE + cdef class Marshaller: cdef object signature_tree diff --git a/src/dbus_fast/_private/marshaller.py b/src/dbus_fast/_private/marshaller.py index 3118900..ecfa259 100644 --- a/src/dbus_fast/_private/marshaller.py +++ b/src/dbus_fast/_private/marshaller.py @@ -5,6 +5,8 @@ from ..signature import SignatureType, Variant, get_signature_tree PACK_UINT32 = Struct(" int: written = self._align(4) - self._buf.extend(PACK_UINT32(int(boolean))) + self._buf += PACKED_BOOL_TRUE if boolean else PACKED_BOOL_FALSE return written + 4 def write_signature(self, signature: str, type_: SignatureType) -> int: