From 0401de4b6838e7a9b24ae7bc0252b5ba30993791 Mon Sep 17 00:00:00 2001 From: leejet Date: Tue, 27 Oct 2026 00:16:55 +0800 Subject: [PATCH] fix: avoid repeated seeks when skipping small GGUF metadata values --- 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 f02fe3c6f4..bf183f7488 100644 --- a/src/model_io/gguf_reader_ext.h +++ b/src/model_io/gguf_reader_ext.h @@ -60,7 +60,12 @@ class GGUFReader { 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;