Browse Source

优化推荐搭配耗时问题

zhaoyang 2 years ago
parent
commit
71d1cb8032

+ 21 - 1
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -2,6 +2,8 @@ using FairyGUI;
 using UnityEngine;
 using ET;
 using static GFGGame.LauncherConfig;
+using System.Collections;
+using System.Collections.Generic;
 
 namespace GFGGame
 {
@@ -102,6 +104,7 @@ namespace GFGGame
 
             LeagueSproxy.ReqGetLeagueInfo().Coroutine();
             await ItemProxy.GetItemInfos();
+
             await RoleLimitSProxy.ReqUnitLimitInfos();
             await InstanceZonesSProxy.GetInstanceZonesInfos();
             await StorageSProxy.ReqGetClientValues();
@@ -247,6 +250,7 @@ namespace GFGGame
 
         private static async void AfterEnterGame(object param)
         {
+            Timers.inst.StartCoroutine(LongRunningTask());
             ItemHelper.GetItemAttributeInfos().Coroutine();
             MainStorySProxy.GetStoryInfos().Coroutine();
             CardSProxy.GetCardInfos().Coroutine();
@@ -288,9 +292,25 @@ namespace GFGGame
                     ViewManager.Show<FieldFightEndView>();
                 }
             }
-            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
 
+            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
         }
+        private static IEnumerator LongRunningTask()
+        {
+            Dictionary<int, List<int>> itemDatasDic = DressUpMenuItemDataManager.ItemDatasBySubTypeDic;
+
+            foreach (int subType in itemDatasDic.Keys)
+            {
+                if (DressUpMenuItemCfg1Array.Instance.CheckIsSceneTypeBySubType(subType)) continue;
+
+                List<int> itemDatas = new List<int>(itemDatasDic[subType]);
+                // 进行耗时操作的代码块
+                yield return null; // 让出当前帧
+                DressUpMenuItemDataManager.SortItemListByHighScore(itemDatas);
+                yield return null; // 让出当前帧
 
+            }
+
+        }
     }
 }

+ 18 - 0
GameClient/Assets/Game/HotUpdate/Utils/TimeUtil.cs

@@ -1,4 +1,5 @@
 using System;
+using System.Diagnostics;
 using ET;
 
 namespace GFGGame
@@ -220,5 +221,22 @@ namespace GFGGame
 
             return timeLeftFormatted;
         }
+
+        /// <summary>
+        /// 测试函数耗时
+        /// </summary>
+        /// <param name="function"></param>
+        public static void CalculateExecutionTime(Action function)
+        {
+            Stopwatch stopwatch = new Stopwatch();
+            stopwatch.Start();
+
+            // Invoke the provided function
+            function.Invoke();
+
+            stopwatch.Stop();
+
+            ET.Log.Warning("Execution time: " + stopwatch.Elapsed.TotalMilliseconds + " ms");
+        }
     }
 }