u3d吧 关注:4,713贴子:7,944
  • 4回复贴,共1

【u3d】谈谈内存,显存,怎么看性能报告,瓶颈定位

只看楼主收藏回复

main ram
内存只跟CPU打交道
GPU能不能直接取内存数据呢
不能
===》AGP RAM GPU从图形加速端口读取内存
数据同步到显存
1.先定位瓶颈
2.理解性能报告
3.解决问题
4.掌握技巧
CPU使用率
渲染性能
程序里面超过60帧没有意义
瓶颈定位一般有三种


IP属地:上海1楼2023-10-15 17:12回复
    1.CPU
    =》编码习惯
    for循环
    内存分配
    2.GPU
    分 3d模型 UGUI
    3.物理 网络
    -------------------------------------------------------------------------------------------------
    消耗CPU时间最高的,Self 本身有没有性能消耗,但是调用的子函数有性能消耗
    怎么看子函数?点小三角展开
    CPU是内存问题,内存分配不释放,GC Alloc
    瓶颈定位
    GPU的瓶颈,


    IP属地:上海2楼2023-10-15 17:17
    回复
      不同的部位用的材质不一样,会产生多个渲染批次,产生Draw Call
      四边形 6个顶点 两个面 ,单独批次进行处理
      DrawCall 就是CPU给GPU发送的绘图指令,越多越高
      Batches=》绘制批次
      为什么渲染批次多,显卡就会变慢
      和显卡结构有关


      IP属地:上海3楼2023-10-15 17:22
      回复
        CPU结构
        动态内存
        缓存
        运算控制单元,逻辑运算单元
        CPU 从缓存读数据 =》控制单元分配到逻辑运算单元
        CPU结构不存在大批量数据并行运算
        GPU的任务是对每个顶点的任务是相同的,顶点数量 像素数量非常多,需要GPU进行并行运算
        流水线运算单元多
        适合大规模运算
        ------------------------------------------------------------------------------------------------------------------------------
        多个批次渲染使得大规模并行运算变慢
        DrawCall只是一个方面,SetPassCall
        SetPassCall CPU往GPU发送的图形运算的命令的数量,越多,性能影响越大


        IP属地:上海4楼2023-10-15 17:31
        回复
          设置的渲染状态越多,执行时切换的渲染状态越多,显卡越慢
          定位:
          1.性能分析器
          2.渲染统计窗口
          字符串具有不变形,+=会不断分配新的内存空间
          频繁分配内存:
          内存碎片?
          GC alloc 分配了暂时不释放
          StringBuilder 字符串的缓存
          foreach========》实现原理反汇编:
          枚举器 隐式调用 GetEnumrator()
          获取定位器,定位器会new产生内存分配
          MoveNext方法
          GC alloc点
          序列化 反序列化
          GetComponent Input.Touches Mesh.vertices
          Get可能是内存的拷贝
          Debug.Log
          Camera.main
          Physcs.RaycasAll =>Physics.RaycastNonAlloc


          IP属地:上海5楼2023-10-15 18:52
          回复