松江网站建设品划网络,wordpress的根目录在哪里,app软件开发制作公司电话,wordpress 表格 链接本文地址#xff1a;https://blog.csdn.net/t163361/article/details/135024136
针对工作中遇到的优化问题#xff0c;记录一下#xff0c;给大家优化自己的项目提供一些思路。 公司产品最近正给国内某大型赛事做支撑服务暴露出不少问题。
使用环境
Unity 2021.3.0f1 cpu…本文地址https://blog.csdn.net/t163361/article/details/135024136
针对工作中遇到的优化问题记录一下给大家优化自己的项目提供一些思路。 公司产品最近正给国内某大型赛事做支撑服务暴露出不少问题。
使用环境
Unity 2021.3.0f1 cpu i7 10750H 显卡 T1000 4G 内存 16G
问题分析解决
程序集成了EasyDecal插件。最近被大量使用暴露出不少问题。 1.当创建多个EasyDecal对象时最后一个会无法加载 2.在某些模型上添加特别慢 2000ms以上 记录一下下次更新 3.修改大小时会特别慢 2000ms以上 记录一下下次更新
优化思路
问题一
先确认问题 开发电脑无法触发问题测试电脑才会触发。多次尝试(2天)后终于找到比较容易触发的方法通过观察发现问题出现概率和性能有关速度越慢的电脑越容易触发同时功能加载的部分用的是Task其中用到了CancellationTokenSource这个类下面是部分调用代码 tokenSource new CancellationTokenSource();var tasktoken tokenSource.Token;var task Task.Run(() {if(tasktoken.IsCancellationRequested)return;this.meshCutter.CutMesh(this.dynamicMesh);},tasktoken);task.GetAwaiter().OnCompleted(() {this.Parent.AddDynamicMesh(this.dynamicMesh, false);task.Dispose();tokenSource?.Cancel();});5.通过加log发现下面两个处理函数调用次数不匹配
this.meshCutter.CutMesh(this.dynamicMesh);
this.Parent.AddDynamicMesh(this.dynamicMesh, false);AddDynamicMesh对应的CutMesh没有调用这样方向就有了。 6.仔细看代码偶然发现tokenSource是这么定义的
static CancellationTokenSource tokenSource new CancellationTokenSource();7.好嘛全局通用那肯定当性能比较卡多次触发加载的时候会导致
tokenSource?.Cancel();这句代码把最后一次加载给强制关闭掉。当然如果卡的厉害应该会出现多次加载被强制关闭的情况。 8.解决就比较简单了把定义里面的static给删掉就好了
最终效果
问题解决。这个问题主要的时间花费在问题重现上了。当能有很容易的触发方式后通过加log的方式很快就确认问题了。