From 28d94e336c6e1609f5500c19c4ba144c78430c4b Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 11 Aug 2025 23:44:41 +0900 Subject: [PATCH] fiber.c: optimize string concatenation in fiber_to_s for better performance Co-authored-by: Claude --- mrbgems/mruby-fiber/src/fiber.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c index 0a65828d1..065c5b878 100644 --- a/mrbgems/mruby-fiber/src/fiber.c +++ b/mrbgems/mruby-fiber/src/fiber.c @@ -379,7 +379,13 @@ fiber_to_s(mrb_state *mrb, mrb_value self) fiber_check(mrb, self); const struct RFiber *f = fiber_ptr(self); - mrb_value s = mrb_str_new_lit(mrb, "#<"); + /* Cache status to avoid redundant lookups */ + enum mrb_fiber_state status = f->cxt->status; + + /* Pre-allocate buffer - 150 bytes handles typical fiber strings */ + mrb_value s = mrb_str_buf_new(mrb, 150); + + mrb_str_cat_lit(mrb, s, "#<"); mrb_value cname = mrb_class_path(mrb, mrb_class_real(mrb_class(mrb, self))); if (mrb_nil_p(cname)) { mrb_str_cat_lit(mrb, s, "Fiber:");