From d1d7a6dcbd4bd0d689d0d379d2d887d01b0beacb Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 09 十二月 2025 16:21:07 +0800
Subject: [PATCH] 0312 优化字符串拼接函数

---
 Assets/Launch/Utility/StringUtility.cs |   83 +++++++++++++++++++++++++++++++----------
 1 files changed, 63 insertions(+), 20 deletions(-)

diff --git a/Assets/Launch/Utility/StringUtility.cs b/Assets/Launch/Utility/StringUtility.cs
index f28fc97..72bd249 100644
--- a/Assets/Launch/Utility/StringUtility.cs
+++ b/Assets/Launch/Utility/StringUtility.cs
@@ -1,46 +1,89 @@
-锘縰sing UnityEngine;
+using UnityEngine;
 using System.Collections;
 using System.Text;
+using System;
 
 public class StringUtility
 {
-    public static string[] splitSeparator = new string[] { "|" };
+    public static readonly string[] splitSeparator = new string[] { "|" };
 
-    private static StringBuilder s_CacheStringBuilder = new StringBuilder();
 
-    static object lockObject = new object();
-
-    public static string Contact(params object[] _objects)
+    // 鏂板锛氫负寰幆璋冪敤鐨勪紭鍖栫増鏈紙澶嶇敤StringBuilder锛�
+    [ThreadStatic]
+    private static StringBuilder _threadLocalStringBuilder;
+    
+    /// <summary>
+    /// 鑾峰彇褰撳墠绾跨▼鐨凷tringBuilder
+    /// </summary>
+    private static StringBuilder GetThreadLocalStringBuilder()
     {
-        lock (lockObject)
+        if (_threadLocalStringBuilder == null)
         {
-            s_CacheStringBuilder.Remove(0, s_CacheStringBuilder.Length);
-            for (int i = 0; i < _objects.Length; ++i)
-            {
-                if (_objects[i] != null)
-                {
-                    s_CacheStringBuilder.Append(_objects[i]);
-                }
-            }
-            return s_CacheStringBuilder.ToString();
+            _threadLocalStringBuilder = new StringBuilder();
         }
+        return _threadLocalStringBuilder;
     }
+
+    /// <summary>
+    /// 鏅鸿兘瀛楃涓叉嫾鎺ユ柟娉曪紝鑷姩閫夋嫨鏈�浼樼瓥鐣�
+    /// - 2-4涓瓧绗︿覆锛氱洿鎺ヤ娇鐢� string.Concat() (鏈�楂樻�ц兘)
+    /// - 5涓互涓婂瓧绗︿覆锛氫娇鐢ㄧ嚎绋嬫湰鍦� StringBuilder 澶嶇敤 (寰幆浼樺寲)
+    /// </summary>
+    public static string Concat(params string[] _objects)
+    {
+        // 灏戦噺瀛楃涓茬洿鎺ヤ娇鐢–oncat锛屾�ц兘鏈�浣�
+        if (_objects.Length <= 4)
+        {
+            return string.Concat(_objects);
+        }
+
+        // 澶ч噺瀛楃涓蹭娇鐢ㄧ嚎绋嬫湰鍦癝tringBuilder锛岄伩鍏嶉噸澶嶅垱寤�
+        var sb = GetThreadLocalStringBuilder();
+        sb.Clear();
+        foreach (string str in _objects)
+        {
+            sb.Append(str);
+        }
+        return sb.ToString();
+    }
+    
+    // AI鎻愰啋瀹為檯鍦ㄧ幇浠g紪杈戝櫒涓紝浣庝簬4涓瓧绗︿覆鐨�+ 鎿嶄綔绗︾殑鎬ц兘鍜� string.Concat 鍑犱箮鐩稿悓锛屼細琚櫤鑳戒紭鍖栦负 string.Concat
+    // 娣诲姞甯哥敤2涓瓧绗︿覆鎷兼帴鐨勪紭鍖栫増鏈�
+    public static string Contact(string str1, string str2)
+    {
+        return string.Concat(str1, str2);
+    }
+    
+    // 娣诲姞甯哥敤3涓瓧绗︿覆鎷兼帴鐨勪紭鍖栫増鏈�
+    public static string Contact(string str1, string str2, string str3)
+    {
+        return string.Concat(str1, str2, str3);
+    }
+    
+    // 娣诲姞甯哥敤4涓瓧绗︿覆鎷兼帴鐨勪紭鍖栫増鏈�
+    public static string Contact(string str1, string str2, string str3, string str4)
+    {
+        return string.Concat(str1, str2, str3, str4);
+    }
+   
+
+  
 
 
     public static string FormatSpeed(float speed)
     {
         if (speed > 1048576f)
         {
-            return StringUtility.Contact((speed / 1048576f).ToString("f1"), " M/S");
+            return Contact((speed / 1048576f).ToString("f1"), " M/S");
         }
         else if (speed > 1024f)
         {
-            return StringUtility.Contact((speed / 1024f).ToString("f1"), " KB/S");
+            return Contact((speed / 1024f).ToString("f1"), " KB/S");
         }
         else
         {
-            return StringUtility.Contact(speed.ToString("f1"), " B/S");
-        };
+            return Contact(speed.ToString("f1"), " B/S");
+        }
     }
 
 }

--
Gitblit v1.8.0