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