From 98410e25597329d61d4c51821a21ae070d0ee731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Sinan=20A=C4=9Facan?= Date: Tue, 24 Oct 2023 15:24:57 +0200 Subject: [PATCH] Avoid intermediate Uint8List --- .../lib/src/protobuf/coded_buffer_writer.dart | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/protobuf/lib/src/protobuf/coded_buffer_writer.dart b/protobuf/lib/src/protobuf/coded_buffer_writer.dart index 58656be6..4e5dfaa5 100644 --- a/protobuf/lib/src/protobuf/coded_buffer_writer.dart +++ b/protobuf/lib/src/protobuf/coded_buffer_writer.dart @@ -152,21 +152,11 @@ class CodedBufferWriter { final leftInChunk = bytesInChunk - chunkPos; final bytesToCopyFromChunk = leftInChunk > bytesToCopy ? bytesToCopy : leftInChunk; - final endPos = chunkPos + bytesToCopyFromChunk; - - if (bytesToCopyFromChunk <= 20) { - while (chunkPos < endPos) { - buffer[outPos++] = chunk[chunkPos++]; - } - bytesToCopy -= bytesToCopyFromChunk; - } else { - final chunkSlice = Uint8List.sublistView(chunk, chunkPos, endPos); - buffer.setRange( - outPos, outPos + bytesToCopyFromChunk, chunkSlice); - chunkPos += bytesToCopyFromChunk; - outPos += bytesToCopyFromChunk; - bytesToCopy -= bytesToCopyFromChunk; - } + buffer.setRange( + outPos, outPos + bytesToCopyFromChunk, chunk, chunkPos); + chunkPos += bytesToCopyFromChunk; + outPos += bytesToCopyFromChunk; + bytesToCopy -= bytesToCopyFromChunk; // Move to the next chunk if the current one is exhausted. if (chunkPos == bytesInChunk) {