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