From 65dda2aef539d22220c8a5dbe44bdf068a8c29f5 Mon Sep 17 00:00:00 2001 From: alrun3 <221875817+alrun3@users.noreply.github.com> Date: Fri, 1 Aug 2025 22:10:18 +0200 Subject: [PATCH] perf: use `Seek` when possible to skip bytes efficiently --- W3GNET/Extensions/BinaryReaderExtension.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/W3GNET/Extensions/BinaryReaderExtension.cs b/W3GNET/Extensions/BinaryReaderExtension.cs index e066218..fb64215 100644 --- a/W3GNET/Extensions/BinaryReaderExtension.cs +++ b/W3GNET/Extensions/BinaryReaderExtension.cs @@ -11,14 +11,22 @@ internal static class BinaryReaderExtension { internal static void SkipBytes(this BinaryReader reader, uint count) { - for (int i = 0; i < count; i++) + var stream = reader.BaseStream; + if (stream.CanSeek) { - if (reader.BaseStream.Length <= reader.BaseStream.Position) + stream.Seek(Math.Min(count, stream.Length - stream.Position), SeekOrigin.Current); + } + else + { + for (int i = 0; i < count; i++) { - return; - } + if (stream.Length <= stream.Position) + { + return; + } - reader.ReadByte(); + _ = reader.ReadByte(); + } } }