Commit bb6b128 for stable-diffusion.cpp
commit bb6b128b2daf92e2c80919a311da6267369a4039
Author: leejet <leejet714@gmail.com>
Date: Tue Oct 27 00:24:43 2026 +0800
fix: avoid repeated seeks when skipping small GGUF metadata values (#2223)
diff --git a/src/model_io/gguf_reader_ext.h b/src/model_io/gguf_reader_ext.h
index f02fe3c..bf183f7 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<std::streamoff>(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<std::streamsize>(size));
+ } else {
+ fin.seekg(static_cast<std::streamoff>(size), std::ios::cur);
+ }
if (!fin.good())
return false;
remaining_bytes_ -= size;