游戏性能测试总结-基本知识

性能测试基本知识

1、FPS/FrameTime

FPS:帧率,每秒的帧数,若游戏帧率是60帧,也就是一秒60帧。

FrameTime:帧的时间,单是ms-毫秒,1秒=1000ms。比如FrameTime平均是25ms,那FPS=1000/25

 

2.GameThread/RenderThread/GPU

FrameTime主要由GameThread/RenderThread/GPU的最大值决定

GameThread是逻辑线程,一般处理游戏逻辑,比如物理,角色的移动,网络收发等。GameThreadTime就是每帧逻辑线程的执行时间,单位是ms

RenderThread是渲染线程,跟渲染有关系,画面的处理,遮挡剔除,距离裁剪,提交渲染等。RenderThreadTime就是每帧渲染线程的执行时间,单位是ms

GPU,渲染线程提交GPU渲染,由GPU绘制最终的画面,提交至屏幕输出。GPUTime就是绘制一帧画面的时间,单位是ms。(显卡的一部分)

 

3.PSO(Pipeline Stage Object)

在游戏第一次安装启动时,运行游戏可能会有卡顿现象,再跑测就不会,实际上卡顿是在编译Shader。shader编译的卡顿有时候我们不希望统计到性能数据里,所以跑测时需要先跑几轮游戏,进行shader预热之后,再采集数据。

 

4.DrawCall

引擎每次提交渲染资源会调用一次Draw函数,DrawCall就是一帧里面,引擎调用Draw的次数,是一个常见的渲染性能指标。DC越多,渲染线程越差

 

5.面数(Triangles)

渲染画面,模型都是由若干个三角面组成的,如下图的兔子,就是有很多三角面。面数越多,模型越精细,视觉效果更逼真。但是面数太多,帧率会下降、内存也会增加

 

6.LOD(Level of Detail)
模型一般都会做分级,比如LOD1面数是3000,LOD2面数是1500,LOD3面数是500。根据实际情况进行切换不同级别的模型,比如远处的模型,不需要这么多细节,可以用LOD3。

 

内存溢出‌与泄漏‌

  • ‌内存溢出‌:当程序申请的内存超过了系统可提供的内存资源时,会发生内存溢出。这通常是因为程序中存在过多的数据结构或对象,导致内存需求超过了物理或虚拟内存的限制。
  • ‌内存泄漏‌:内存泄漏是指程序在分配内存后,由于某些原因未能及时释放,导致内存被长时间占用而无法回收。随着时间的推移,内存泄漏会导致系统可用内存逐渐减少,最终可能影响程序的正常运行或导致系统崩溃。

表现形式

  • ‌内存溢出‌:通常表现为程序突然崩溃或无法执行,伴随有内存不足的错误信息。这是因为程序需要的内存超过了系统能提供的上限。
  • ‌内存泄漏‌:表现为程序运行时间越长,占用内存越多,可能导致程序响应变慢或最终崩溃。内存泄漏不会立即导致程序崩溃,但会慢慢消耗系统资源。

OOM全称叫Out of Memory,内存超过系统的某个阈值限制,会触发程序Crash。OOM的阈值不同机型不一样,以iOS为例,

总内存1G,OOM阈值645M:

  • iPhone6: 645MB/1024MB/62% (iOS 8.x)
  • iPhone6+: 645MB/1024MB/62% (iOS 8.x)

总内存2G,OOM阈值1360-1396M:

  • iPhone6s: 1396MB/2048MB/68% (iOS 9.2)
  • iPhone6s+: 1392MB/2048MB/68% (iOS 10.2.1)
  • iPhoneSE: 1395MB/2048MB/69% (iOS 9.3)
  • iPhone7: 1395/2048MB/68% (iOS 10.2)
  • iPhone8: 1364/1990MB/70% (iOS 12.1)

总内存3G,OOM阈值1790M:

  • iPhone 7P
  • iPhone 8P
  • iPhone X
  • iPhone XR

总内存4G,OOM阈值2040-2080M:

  • iPhone XS
  • iPhone XS Max
  • iPhone XR
  • iPhone 11
  • iPhone 11 Pro/Pro Max
  • iPhone 12
  • iPhone 13

总内存6G,OOM阈值2080M:

  • iPhone 12 Pro/Pro Max
  • iPhone 13 Pro/Pro Max
posted @ 2025-02-05 16:30  SiNanhong  阅读(58)  评论(0编辑  收藏  举报