Skip to content

Commit 958779b

Browse files
committed
Massively improve the performance of serialisation of arrays in the f142 serialiser module.
1 parent 13a9925 commit 958779b

File tree

2 files changed

+11
-41
lines changed

2 files changed

+11
-41
lines changed

streaming_data_types/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Version is not directly defined in __init__ because that causes all
22
# run time dependencies to become build-time dependencies when it is
33
# imported in setup.py
4-
version = "0.15.0"
4+
version = "0.15.1"

streaming_data_types/logdata_f142.py

Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,7 @@ def _serialise_byte(builder: flatbuffers.Builder, data: np.ndarray, source: int)
191191

192192

193193
def _serialise_bytearray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
194-
ArrayByteStartValueVector(builder, len(data))
195-
for single_value in reversed(data):
196-
builder.PrependInt8(single_value)
197-
array_offset = builder.EndVector(len(data))
194+
array_offset = builder.CreateNumpyVector(data)
198195
ArrayByteStart(builder)
199196
ArrayByteAddValue(builder, array_offset)
200197
value_position = ArrayByteEnd(builder)
@@ -215,10 +212,7 @@ def _serialise_ubyte(builder: flatbuffers.Builder, data: np.ndarray, source: int
215212

216213

217214
def _serialise_ubytearray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
218-
ArrayUByteStartValueVector(builder, len(data))
219-
for single_value in reversed(data):
220-
builder.PrependUint8(single_value)
221-
array_offset = builder.EndVector(len(data))
215+
array_offset = builder.CreateNumpyVector(data)
222216
ArrayUByteStart(builder)
223217
ArrayUByteAddValue(builder, array_offset)
224218
value_position = ArrayUByteEnd(builder)
@@ -239,10 +233,7 @@ def _serialise_short(builder: flatbuffers.Builder, data: np.ndarray, source: int
239233

240234

241235
def _serialise_shortarray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
242-
ArrayShortStartValueVector(builder, len(data))
243-
for single_value in reversed(data):
244-
builder.PrependInt16(single_value)
245-
array_offset = builder.EndVector(len(data))
236+
array_offset = builder.CreateNumpyVector(data)
246237
ArrayShortStart(builder)
247238
ArrayShortAddValue(builder, array_offset)
248239
value_position = ArrayShortEnd(builder)
@@ -263,10 +254,7 @@ def _serialise_ushort(builder: flatbuffers.Builder, data: np.ndarray, source: in
263254

264255

265256
def _serialise_ushortarray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
266-
ArrayUShortStartValueVector(builder, len(data))
267-
for single_value in reversed(data):
268-
builder.PrependUint16(single_value)
269-
array_offset = builder.EndVector(len(data))
257+
array_offset = builder.CreateNumpyVector(data)
270258
ArrayUShortStart(builder)
271259
ArrayUShortAddValue(builder, array_offset)
272260
value_position = ArrayUShortEnd(builder)
@@ -287,10 +275,7 @@ def _serialise_int(builder: flatbuffers.Builder, data: np.ndarray, source: int):
287275

288276

289277
def _serialise_intarray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
290-
ArrayIntStartValueVector(builder, len(data))
291-
for single_value in reversed(data):
292-
builder.PrependInt32(single_value)
293-
array_offset = builder.EndVector(len(data))
278+
array_offset = builder.CreateNumpyVector(data)
294279
ArrayIntStart(builder)
295280
ArrayIntAddValue(builder, array_offset)
296281
value_position = ArrayIntEnd(builder)
@@ -311,10 +296,7 @@ def _serialise_uint(builder: flatbuffers.Builder, data: np.ndarray, source: int)
311296

312297

313298
def _serialise_uintarray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
314-
ArrayUIntStartValueVector(builder, len(data))
315-
for single_value in reversed(data):
316-
builder.PrependUint32(single_value)
317-
array_offset = builder.EndVector(len(data))
299+
array_offset = builder.CreateNumpyVector(data)
318300
ArrayUIntStart(builder)
319301
ArrayUIntAddValue(builder, array_offset)
320302
value_position = ArrayUIntEnd(builder)
@@ -335,10 +317,7 @@ def _serialise_long(builder: flatbuffers.Builder, data: np.ndarray, source: int)
335317

336318

337319
def _serialise_longarray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
338-
ArrayLongStartValueVector(builder, len(data))
339-
for single_value in reversed(data):
340-
builder.PrependInt64(single_value)
341-
array_offset = builder.EndVector(len(data))
320+
array_offset = builder.CreateNumpyVector(data)
342321
ArrayLongStart(builder)
343322
ArrayLongAddValue(builder, array_offset)
344323
value_position = ArrayLongEnd(builder)
@@ -359,10 +338,7 @@ def _serialise_ulong(builder: flatbuffers.Builder, data: np.ndarray, source: int
359338

360339

361340
def _serialise_ulongarray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
362-
ArrayULongStartValueVector(builder, len(data))
363-
for single_value in reversed(data):
364-
builder.PrependUint64(single_value)
365-
array_offset = builder.EndVector(len(data))
341+
array_offset = builder.CreateNumpyVector(data)
366342
ArrayULongStart(builder)
367343
ArrayULongAddValue(builder, array_offset)
368344
value_position = ArrayULongEnd(builder)
@@ -383,10 +359,7 @@ def _serialise_float(builder: flatbuffers.Builder, data: np.ndarray, source: int
383359

384360

385361
def _serialise_floatarray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
386-
ArrayFloatStartValueVector(builder, len(data))
387-
for single_value in reversed(data):
388-
builder.PrependFloat32(single_value)
389-
array_offset = builder.EndVector(len(data))
362+
array_offset = builder.CreateNumpyVector(data)
390363
ArrayFloatStart(builder)
391364
ArrayFloatAddValue(builder, array_offset)
392365
value_position = ArrayFloatEnd(builder)
@@ -407,10 +380,7 @@ def _serialise_double(builder: flatbuffers.Builder, data: np.ndarray, source: in
407380

408381

409382
def _serialise_doublearray(builder: flatbuffers.Builder, data: np.ndarray, source: int):
410-
ArrayDoubleStartValueVector(builder, len(data))
411-
for single_value in reversed(data):
412-
builder.PrependFloat64(single_value)
413-
array_offset = builder.EndVector(len(data))
383+
array_offset = builder.CreateNumpyVector(data)
414384
ArrayDoubleStart(builder)
415385
ArrayDoubleAddValue(builder, array_offset)
416386
value_position = ArrayDoubleEnd(builder)

0 commit comments

Comments
 (0)