From 7222152566f45806c8a697dd28da3b8819aadb0c Mon Sep 17 00:00:00 2001 From: Flavio Brasil Date: Thu, 29 Feb 2024 09:54:33 -0800 Subject: [PATCH] optimize uri parsing to reduce StringBuilder allocations --- core/src/main/scala/sttp/model/UriInterpolator.scala | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/main/scala/sttp/model/UriInterpolator.scala b/core/src/main/scala/sttp/model/UriInterpolator.scala index 0481e494..707756f7 100644 --- a/core/src/main/scala/sttp/model/UriInterpolator.scala +++ b/core/src/main/scala/sttp/model/UriInterpolator.scala @@ -731,6 +731,14 @@ object UriInterpolator { case Singleton(ExpressionToken(s: Array[_])) => b ++= s.flatMap(anyToStringOpt) doToSeq(tailTs) + case valueTs if(valueTs.size == 1) => + valueTs.get(0) match { + case StringToken(s) => b += decode(s, decodePlusAsSpace) + case ExpressionToken(e) => anyToStringOpt(e).foreach(b += _) + case EqInQuery => b += "=" + case _ => + } + doToSeq(tailTs) case valueTs => val mbStr = valueTs mkStringOpt { case StringToken(s) => Some(decode(s, decodePlusAsSpace))