Android性能优化系列——VSYNC

概念

  1. VSYNC,vertical synchronization
  2. Refresh Rate 屏幕一秒钟刷新的次数,由硬件决定,单位Hz,一般是60Hz
  3. Frame Rate GPU在一秒内绘制的帧数,单位fps(Frames per second)

具体解释

GPU获取图形数据进行绘制,硬件将绘制好的数据呈现在屏幕上,为了使画面在屏幕上流畅的显示,需要保持Frame Rate 在60以上,也就是一次draw操作的时间不超过16.7ms。

Frame Rate与Refrash Rate不会总保持一致,如果GPU绘制速度大于屏幕刷新速度,就会出现截断现象,这是因为GPU使用一块内存绘制帧数据,新的图像帧会从上到下一行一行覆盖旧图像帧,当屏幕刷新时并不知道缓冲区现在的数据状态,这样就抓取了GPU中还没有绘制完的一帧数据。

解决方法是双缓冲技术(double buffering),GPU首先将帧数据写到back buffer中,然后把它拷贝到另一块区域frame buffer。当绘制下一帧时,数据先写到back buffer,屏幕刷新时,只从frame buffer中获取。如果GPU正在写back buffer,这时候来了刷新屏幕,VSYNC就会阻止这个拷贝过程。

VSYNC or vertical synchronization,will basically keep this copy operation from back buffer to frame buffer from happening if the screen is in the middle of refreshing from it.

当GPU的绘制速度小于屏幕刷新速度,也就是FrameRate < RefreshRate,就会在屏幕上看到卡顿现象。所以要尽量保证一帧的绘制时间小于16ms。

Reference

Android Performance Patterns: Understanding VSYNC

时间: 2024-10-06 15:21:19

Android性能优化系列——VSYNC的相关文章

Android性能优化系列之apk瘦身

Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身.APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好,包最小的),所以apk的瘦身优化也很重要,本篇博客将讲述apk瘦身的相关内容. 包体分析 在Android Studio工具栏里,打开build–>Analyze APK, 选择要分析的APK包 可以看到占用空间的主要是代码.图

[Android 性能优化系列]内存之终极篇--降低你的内存消耗

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地址:http://developer.android.com/training/articles/memory.html 在接下来的一段时间里,我会每天翻译一部分关于性能提升的Android官方文档给大家 建议大家在看本文之前先去我的博客看看 [Android 性能优化系列]内存之基础篇--Andr

[Android 性能优化系列]布局篇之减少你的界面层级

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地址:http://developer.android.com/training/improving-layouts/optimizing-layout.html 在接下来的一段时间里,我会每天翻译一部分关于性能提升的Android官方文档给大家 性能优化之布局篇: [Android 性能优化系列]布

[Android 性能优化系列]布局篇之通过&lt;include&gt;复用布局

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地址:http://developer.android.com/training/improving-layouts/reusing-layouts.html 在接下来的一段时间里,我会每天翻译一部分关于性能提升的Android官方文档给大家 性能优化布局篇: [Android 性能优化系列]布局篇之

[Android 性能优化系列]内存之基础篇--Android怎样管理内存

大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地址:http://developer.android.com/training/articles/memory.html 在接下来的一段时间里,我会每天翻译一部分关于性能提升的Android官方文档给大家 以下是本次的正文: ################ 随机訪问存储器(Ram) 无论在哪种软件

(二)Android性能优化系列---Improving Layout Performance(一)(转载自:http://xhmj12.iteye.com/blog/2064258)

Android性能优化系列---Improving Layout Performance(一) Layouts是Android应用里直接影响用户体验的一个关键部分.如果Layout设计的不好,可能导致你的应用大量的内存占用从而导致UI响应很慢.Android SDK提供了工具帮助你分析你的Layouts的性能问题.结合这个工具同时查看本文,你能实现滑动流畅.占用内存最小的用户界面. Use the <merge> Tag 某些时候,自定义可重用的布局包含了过多的层级标签,比如我们需要在Line

Android性能优化系列之App启动优化

Android性能优化系列之布局优化 Android性能优化系列之内存优化 Android性能优化系列之apk瘦身 应用的启动速度缓慢是我们在开发过程中常常会遇到的问题,比方启动缓慢导致的黑屏.白屏问题,本篇博客就将介绍App启动优化的相关知识. 应用的启动方式 通常来说,启动方式分为两种:冷启动和热启动. 1.冷启动:当启动应用时.后台没有该应用的进程.这时系统会又一次创建一个新的进程分配给该应用.这个启动方式就是冷启动. 冷启动由于系统会又一次创建一个新的进程分配给它.所以会先创建和初始化A

[Android 性能优化系列]布局篇之动态加载布局

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地址:http://developer.android.com/training/improving-layouts/loading-ondemand.html 在接下来的一段时间里,我会每天翻译一部分关于性能提升的Android官方文档给大家 性能优化布局篇: [Android 性能优化系列]布局篇

Android性能优化系列之Bitmap图片优化

在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError - 内存溢出),本篇博客,我们将一起探讨Bitmap的性能优化. 为什么Bitmap会导致OOM? 1.每个机型在编译ROM时都设置了一个应用堆内存VM值上限dalvik.vm.heapgrowthlimit,用来限定每个应用可用的最大内存,超出这个最大值将会报OOM.这个阀值,一般根据手机屏幕dpi大小递增,dpi越小的手机,每