Use external package betterproto-rust-codec for better (de-)serialization performance (#545)
* optionally use betterproto-rust-codec * monkey patch `parse` and `__bytes__`
This commit is contained in:
@@ -6,32 +6,32 @@ import betterproto
|
||||
|
||||
@dataclass
|
||||
class TestMessage(betterproto.Message):
|
||||
foo: int = betterproto.uint32_field(0)
|
||||
bar: str = betterproto.string_field(1)
|
||||
baz: float = betterproto.float_field(2)
|
||||
foo: int = betterproto.uint32_field(1)
|
||||
bar: str = betterproto.string_field(2)
|
||||
baz: float = betterproto.float_field(3)
|
||||
|
||||
|
||||
@dataclass
|
||||
class TestNestedChildMessage(betterproto.Message):
|
||||
str_key: str = betterproto.string_field(0)
|
||||
bytes_key: bytes = betterproto.bytes_field(1)
|
||||
bool_key: bool = betterproto.bool_field(2)
|
||||
float_key: float = betterproto.float_field(3)
|
||||
int_key: int = betterproto.uint64_field(4)
|
||||
str_key: str = betterproto.string_field(1)
|
||||
bytes_key: bytes = betterproto.bytes_field(2)
|
||||
bool_key: bool = betterproto.bool_field(3)
|
||||
float_key: float = betterproto.float_field(4)
|
||||
int_key: int = betterproto.uint64_field(5)
|
||||
|
||||
|
||||
@dataclass
|
||||
class TestNestedMessage(betterproto.Message):
|
||||
foo: TestNestedChildMessage = betterproto.message_field(0)
|
||||
bar: TestNestedChildMessage = betterproto.message_field(1)
|
||||
baz: TestNestedChildMessage = betterproto.message_field(2)
|
||||
foo: TestNestedChildMessage = betterproto.message_field(1)
|
||||
bar: TestNestedChildMessage = betterproto.message_field(2)
|
||||
baz: TestNestedChildMessage = betterproto.message_field(3)
|
||||
|
||||
|
||||
@dataclass
|
||||
class TestRepeatedMessage(betterproto.Message):
|
||||
foo_repeat: List[str] = betterproto.string_field(0)
|
||||
bar_repeat: List[int] = betterproto.int64_field(1)
|
||||
baz_repeat: List[bool] = betterproto.bool_field(2)
|
||||
foo_repeat: List[str] = betterproto.string_field(1)
|
||||
bar_repeat: List[int] = betterproto.int64_field(2)
|
||||
baz_repeat: List[bool] = betterproto.bool_field(3)
|
||||
|
||||
|
||||
class BenchMessage:
|
||||
@@ -44,25 +44,14 @@ class BenchMessage:
|
||||
self.instance_filled_bytes = bytes(self.instance_filled)
|
||||
self.instance_filled_nested = TestNestedMessage(
|
||||
TestNestedChildMessage("foo", bytearray(b"test1"), True, 0.1234, 500),
|
||||
TestNestedChildMessage("bar", bytearray(b"test2"), True, 3.1415, -302),
|
||||
TestNestedChildMessage("bar", bytearray(b"test2"), True, 3.1415, 302),
|
||||
TestNestedChildMessage("baz", bytearray(b"test3"), False, 1e5, 300),
|
||||
)
|
||||
self.instance_filled_nested_bytes = bytes(self.instance_filled_nested)
|
||||
self.instance_filled_repeated = TestRepeatedMessage(
|
||||
[
|
||||
"test1",
|
||||
"test2",
|
||||
"test3",
|
||||
"test4",
|
||||
"test5",
|
||||
"test6",
|
||||
"test7",
|
||||
"test8",
|
||||
"test9",
|
||||
"test10",
|
||||
],
|
||||
[2, -100, 0, 500000, 600, -425678, 1000000000, -300, 1, -694214214466],
|
||||
[True, False, False, False, True, True, False, True, False, False],
|
||||
[f"test{i}" for i in range(1_000)],
|
||||
[(i - 500) ** 3 for i in range(1_000)],
|
||||
[i % 2 == 0 for i in range(1_000)],
|
||||
)
|
||||
self.instance_filled_repeated_bytes = bytes(self.instance_filled_repeated)
|
||||
|
||||
@@ -71,9 +60,9 @@ class BenchMessage:
|
||||
|
||||
@dataclass
|
||||
class Message(betterproto.Message):
|
||||
foo: int = betterproto.uint32_field(0)
|
||||
bar: str = betterproto.string_field(1)
|
||||
baz: float = betterproto.float_field(2)
|
||||
foo: int = betterproto.uint32_field(1)
|
||||
bar: str = betterproto.string_field(2)
|
||||
baz: float = betterproto.float_field(3)
|
||||
|
||||
def time_instantiation(self):
|
||||
"""Time instantiation"""
|
||||
|
||||
Reference in New Issue
Block a user