性能测试开始前必知知识点

news/2024/7/6 5:19:19

1、什么是GPU,主要用来做什么?

    

     解释:图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑工作站、游戏机和一些移动设备(如平板电脑智能手机等)上图像运算工作的微处理器

 

     显卡的处理器称为图形处理器(GPU),它是显卡的“心脏”,与CPU类似,只不过GPU是专为执行复杂的数学和几何计算而设计的,这些计算是图形渲染所必需的。某些最快速的GPU集成的晶体管数甚至超过了普通CPU。

 

     GPU会产生大量热量,所以它的上方通常安装有散热器或风扇。

 

 

2、什么是CPU,主要用来做什么?

 

      解释:中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

 

      功能:处理指令、执行操作、控制时间、处理时间

 

      CPU过高带来的影响:可能会使整个手机无法响应,整体性能降低,引起ANR,导致手机更耗电,降低用户体验等。

 

 

3、什么是离屏渲染?什么是屏幕渲染?他俩的区别?

 

     GPU的屏幕渲染机制如下有2种

     

            屏幕渲染:指的是GPU的渲染操作时在当前用于显示的屏幕缓冲区进行

   

            离屏渲染:指的是GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作

 

      如下操作将会触发离屏渲染:

 

             光栅化:将图转化为一个个栅格组成的图像,特点:每个元素对应帧缓冲区的一像素

             遮罩、阴影、边缘抗锯齿、不透明、复杂形状设置圆角等、渐变、文本

 

4、电量对性能产生的影响?

 

      常见的耗电场景:定位,尤其是调用GPS定位

                              网络传输,尤其是非wifi环境

                              屏幕亮度

                              CPU帧率

                              内存调度评率

                              wake_locker 时间和次数

                              其他传感器

      耗电的主要因素:屏幕的渲染、CPU的运行

      电量的优化:内存优化、渲染优化、计算优化的时候其实也已经在做电量优化了

 

5、流量对性能的影响?

 

        解释:我们手机通过运营商的网络访问Internet,运营商替我们的手机转发数据报文,数据报文的总大小(字节数)即流量,数据报文是包含手机上下行的报文。

 

 

6、内存对性能的影响?

 

        主要分为:内存泄漏、垃圾回收、内存指标

      (1)内存泄漏

             内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。通俗点讲,在大部分应用中,会有一类功能是需要加载附加资源的,比如显示从网络下载的文本或图片。这类功能往往需要在内存中存放要使用的资源对象,退出该功能后,就需要将这些资源对象清空。如果忘了清理,或者是代码原因造成的清理无效,就会形成内存泄漏。

 

      (2)垃圾回收

              内存中的垃圾,主要指的是内存中已无效但又无法自动释放的空间,除非是重启系统不然永远也不会还给操作系统。这样以来,时间久了当程序运行的时候就会产生很多垃圾,一方面浪费了不少内存空间,另一方面如果同一个内存地址被删除两次的话,程序就会不稳定,甚至奔溃。

 

      (3)内存指标

              内存指标有:VSS、RSS、PSS、USS,他们分别的含义是:

              VSS:Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)

              RSS:Resident Set Size实际使用物理内存(包含共享库占用的内存)

              PSS:Proportional Set Size实际使用的物理内存(按照比例分配共享库占用的内存)

             USS:Unique Set Size进程独自占用的物理内存(不包含共享库占用的内存)

              一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS,一般测试中关注的比较多的是RSS这个指标。

 

7、帧率(丢帧)【卡顿慢的直接原因】

 

          即Frame Rate,单位fps,是指GPU生成帧的速率,如30fps,60fps。

 

          用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能,从设计师的角度,他们希望APP能够有更多的动画、图片等时尚元素来实现流畅的用户体验,但是android系统很有可能无法及时完成那些复杂的界面渲染操作,Android系统每隔16s发出VSYNC信号,出发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需的60fps,为了能够实现60fps,这意味程序的大多数操作都必须在16ms内完成,时间超出16ms越多,丢的帧越多。

           

 

比如:你的某个操作花费时间是24ms,系统在得到VSYNC信号的时候就无法进行正常渲染,这样就发生了丢帧现象,那么用户在32s内看到的会是同一帧画面。

 

             

 

    容易发生丢帧现象的地方:

               UI执行动画

               滑动listview

               或许是layout太过复杂(可用hierarchyviewer来查看页面布局结构,建议尽量用简单的布局),无法在16ms内完成渲染

               UI上有层叠太多的绘制单元

               动画执行的次数过多

     如上都会导致CPU或者GPU负载过重

 

8、为什么帧率要选择60fps??

         原因:因为人眼和大脑之间的协作无法感知超过60fps的画面更新(60fps是最好的效果)

         12fps大概类似手动快速翻动书籍的帧率。这明显是可以感知到不厚顺滑的,24fps使得人眼感知的是连续性的波动,这其实是归功于运动模糊的效果,24fps是电影胶圈通常使用的帧率,因为这个帧率足够支撑大部分电影画面需要表达的内容,同时能够最大的减少费用支出,但是低于30fps是无法顺畅表现绚丽的画面内容的,此时就需要用到60fps来达到想要的效果,超过60fps是没有必要的。

         开发app的性能目标就是保持60fps(低一些亦不会影响用户体验),这意味着每一帧你只有 16ms = 1000 / 60 的时间来处理所有的任务(不能超出太多,例如:大于32ms时就该优化了)

 

9、什么是VSYNC(理解VSYNC)?

        VSYNC:垂直同步

          详见此篇文章介绍很详细:https://blog.csdn.net/zhaizu/article/details/51882768

 

10、什么是流畅度?

          VSYNC机制像是一台转速固定的发送机(60转/s),它每一转带动着去做一些UI相关的事情,但是不是每一转都会有工作去做(就像有时在空挡,有时在D档),有时候因为各种阻力某一圈工作量比较重超过了16.6ms,那么这台发动机这秒内就不是60转了,当然也有可能被其他因素影响,比如给油不足(主线程干的活太多)等等,就会出现转速降低的状况,我们把这个转速叫做流畅度。

 

 

参考链接:https://blog.csdn.net/huang_rong12/article/details/51603250

 

转载于:https://www.cnblogs.com/syw20170419/p/9526214.html


http://www.niftyadmin.cn/n/4557330.html

相关文章

关于C#的Hook技术问题

思路可以这样 在DLL里面 1)用SetProp函数将C#写的一个窗口设置成特别的属性 否则要通过C写DLL 然后用SendNotifyMessage函数将该信息发送给特定属性的托管窗口 ||| static LRESULT CALLBACK ShellHookCallback(int code "FLAG_WND" 比如: SetP…

boost库checked_delete的使用

在查看boost库时发现一个小文件checked_delete.hpp里面几个小函数&#xff0c;它的作用用很简短的话来说&#xff1a;防止未定义的行为造成delete时的内存泄露。实现如下&#xff1a; template<class T> inline void checked_delete(T * x) {// intentionally complex - …

The ODBC resource dll is a different version than the ODBC setup dll

不用上面那麽复杂 到系统里面INSFOTE 的文件修改路径 ||| 看来是你的安装程序版本不一致呀 或者你改路径 D:/ 然后重新安装 所以建议你前提就是删除你C盘数据库 你重复安装数据库了 原因只有一个 你直接到C:盘下直接删除原来德数据库2000 建议最好是重装一下安装程序 弄一个高版…

JFrame的简例。JFrame扩展于AWT的Frame类,JFrame是Swing的组件。Swing是AWT的升级版本。

package tz.yt.simpleframe; import java.awt.*; import javax.swing.*; /** Frame的扩展类&#xff0c;JFrame扩展于Frame是Swing组件之一。Swing是Frame的升级版。不依赖于平台底层实现。解释&#xff1a;1.EventQueue.invokeLater//EventQueue事件队列类&#xff0c;不依赖硬…

求下载地址 vista系统用什么c语言的软件才会兼容

答案补充 Borland C Builder V6.0比较大 但是Borland C Builder V6.0可以 没有完全兼容vista系统的VC6.0 目前为止 如果是VC6.0的话 可以兼容 到迅雷的搜狗下载吧 我有 不影响使用 ||| 下载一个vs2008吧 答案补充 哦 我用了 看看行不行 我给你发过去 留个邮箱给我 搜vs2008就会…

在delphi中package是否能够调用其他package中的类呢

老版的delphi不支持命名空间 导入别的DLL就能调用了 package 应该相当于c#中的dll的概念 调用其它的package 而不是名字空间 ||| 可以调用 ||| 这里的package应当是生成dll的吧 现在的支持了 不过很多package是通过安装到delphi中才能用的——例如很多控件库 只要在工程中加入其…

反射-笔记

1.反射的作用&#xff08;3个&#xff09;。 1.1、在运行时分析类的能力。 1.2、运行时查看对象。 1.3、实现通用的数组操作。 2、class类&#xff08;个人认为&#xff1a;正是因为有class类&#xff0c;才诞生了反射。&#xff09; 解释&#xff1a;JAVA运行时始终为对象…

内部类-笔记-2020.08.06

1.内部类的好处&#xff08;作用&#xff09; 1.1、内部类可以访问本类数据&#xff0c;该类定义所在域中的数据&#xff08;外围数据&#xff0c;内部类外一层的数据&#xff09;。包括私有数据。 1.2、内部类同包中对其他类不可见。可以对同一个包中的其他类隐藏起来。 1.3、…