From bb6b128b2daf92e2c80919a311da6267369a4039 Mon Sep 17 00:00:00 2001 From: leejet Date: Tue, 27 Oct 2026 00:24:43 +0800 Subject: [PATCH] fix: avoid repeated seeks when skipping small GGUF metadata values (#2223) --- src/model_io/gguf_reader_ext.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/model_io/gguf_reader_ext.h b/src/model_io/gguf_reader_ext.h index f02fe3c6..bf183f74 100644 --- a/src/model_io/gguf_reader_ext.h +++ b/src/model_io/gguf_reader_ext.h @@ -60,7 +60,12 @@ private: if (count > remaining_bytes_ / element_size) return false; uint64_t size = count * element_size; - fin.seekg(static_cast(size), std::ios::cur); + // Seeking discards the read buffer, making arrays of short tokenizer strings expensive to skip. + if (size <= 64 * 1024) { + fin.ignore(static_cast(size)); + } else { + fin.seekg(static_cast(size), std::ios::cur); + } if (!fin.good()) return false; remaining_bytes_ -= size;