性能优化

Android性能优化

不打扰是莪最后的温柔 提交于 2019-12-01 10:16:43
GITHUB https://blog.51cto.com/6342127/2307514 说明 这篇文章是将很久以来看过的文章,包括自己写的一些测试代码的总结.属于笔记的性质,没有面面俱到,一些自己相对熟悉的点可能会略过.<br> 最开始看到的性能优化的文章,就是胡凯的优化典范系列,后来又陆续看过一些人写的,个人觉得anly_jun和胡凯的质量最好.<br> 文章大的框架也是先把优化典范过一遍,记录个人认为重要的点,然后是anly_jun的系列,将之前未覆盖的补充进去,也包括HenCoder的一些课程相关内容.<br> 当然除了上面几位,还有很多其他大神的文章,时间久了也记不太清,在此一并谢过. 笔记内容引用来源 胡凯 anly_jun HenCoder 1.Android性能优化之渲染篇 1.VSYNC 帧率:GPU在1秒内绘制操作的帧数.如60fps. 我们通常都会提到60fps与16ms,这是因为人眼与大脑之间的协作无法感知超过60fps的画面更新. 开发app的性能目标就是保持60fps,这意味着每一帧只有16ms=1000/60的时间来处理所有的任务 刷新率:屏幕在1秒内刷新屏幕的次数.如60Hz,每16ms刷新1次屏幕. GPU获取图形数据进行渲染,然后屏幕将渲染后的内容展示在屏幕上. 大多数手机屏幕的刷新率是60Hz,如果GPU渲染1帧的时间低于1000/60

web网站的性能优化

旧时模样 提交于 2019-12-01 10:07:19
Web前端性能优化 1、减少http请求 http协议是无状态的应用层协议,意味着每次http请求都需要建立通信链路、进行数据传输,而在服务器端,每个http请求都需要启动独立的线程去处理。减少http请求的数目可有效提高访问性能。 减少http的主要手段是合并CSS、合并javascript、合并图片。 2、使用浏览器缓存 对一个网站而言,CSS、javascript、logo、图标,这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次http请求都需要的。如果将这些文件缓存在浏览器中,可以极好的改善性能。通过设置http头中的cache-control和expires的属性,可设定浏览器缓存,缓存时间可以自定义。 3、启用压缩 在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效减少通信传输的数据量。如果可以的话,尽可能的将外部的脚本、样式进行合并,多个合为一个。文本文件的压缩效率可达到80%以上,因此HTML、CSS、javascript文件启用GZip压缩可达到较好的效果。但是压缩对服务器和浏览器产生一定的压力,在网络带宽良好,而服务器资源不足的情况下要综合考虑。 4、CSS放在页面最上部,javascript放在页面最下面 浏览器会在下载完成全部CSS之后才对整个页面进行渲染,因此最好的做法是将CSS放在页面最上面,让浏览器尽快下载CSS。

Java 性能优化小细节

℡╲_俬逩灬. 提交于 2019-12-01 09:55:54
代码优化的目标是 减小代码的体积 提高代码运行的效率 代码优化细节 1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50% 。 2、尽量重用对象 特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。 3、尽可能使用局部变量 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。 4、及时关闭流 Java编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,及时关闭以释放资源

一篇文章搞定前端性能优化面试

时光总嘲笑我的痴心妄想 提交于 2019-12-01 09:52:59
前言 虽然前端开发作为 GUI 开发的一种,但是存在其特殊性,前端的特殊性就在于“动态”二字,传统 GUI 开发,不管是桌面应用还是移动端应用都是需要预先下载的,只有先下载应用程序才会在本地操作系统运行,而前端不同,它是“动态增量”式的,我们的前端应用往往是实时加载执行的,并不需要预先下载,这就造成了一个问题,前端开发中往往最影响性能的不是什么计算或者渲染,而是加载速度,加载速度会直接影响用户体验和网站留存。 《Designing for Performance》 的作者 Lara Swanson 在2014年写过一篇文章 《Web性能即用户体验》 ,她在文中提到“网站页面的快速加载,能够建立用户对网站的信任,增加回访率,大部分的用户其实都期待页面能够在2秒内加载完成,而当超过3秒以后, 就会有接近40%的用户离开你的网站 ”。 值得一提的是,GUI 开发依然有一个共同的特殊之处,那就是 体验性能 ,体验性能并不指在绝对性能上的性能优化,而是回归用户体验这个根本目的,因为在 GUI 开发的领域,绝大多数情况下追求绝对意义上的性能是没有意义的. 比如一个动画本来就已经有 60 帧了,你通过一个吊炸天的算法优化到了 120 帧,这对于你的 KPI 毫无用处,因为这个优化本身没有意义,因为除了少数特异功能的异人,没有人能分得清 60 帧和 120 帧的区别,这对于用户的体验没有任何提升

MySQL性能优化(四)-- MySQL explain详解

删除回忆录丶 提交于 2019-12-01 09:42:53
转载地址: https://juejin.im/post/5d141528e51d4577565367d0 MySQL中的explain命令显示了mysql如何使用索引来处理select语句以及连接表。explain显示的信息可以帮助选择更好的索引和写出更优化的查询语句。 一、格式 explain + select 语句; 例如:explain select * from tb_student; 二、5.5和5.7版本explain的区别 5.7之后的版本默认会有 partitions 和 filtered两列,但是5.5版本中是没有的,需要 使用explain partitions select ……来显示带有partitions 的列, 使用explain extended select ……来显示带有filtered的列。 本文是基于5.5.54版本的。 三、explain的作用 1.描述MySQL如何执行查询操作、执行顺序,使用到的索引,以及MySQL成功返回结果集需要执行的行数。 2.可以帮助我们分析 select 语句,让我们知道查询效率低下的原因,从而改进我们的查询,让查询优化器能够更好的工作 查询优化器的作用: 1.优化select 语句,分析哪些是常量表达式(例如id=1),以及分析哪些表达式可以直接转换成常量的 2.对where条件进行简化和转换,如去掉无用条件

性能优化之MySQL优化(慕课)

霸气de小男生 提交于 2019-12-01 05:08:19
MySQL数据库优化 1-1MySQL优化简介 数据库优化的目的 避免出现页面访问错误 由于数据库连接timeout产生5XX错误 由于慢查询造成页面无法加载 由于阻塞造成数据无法提交 增加数据库的稳定性 很多数据库的问题都是由于低效查询引起的 优化用户体验 流畅页面的访问速度 良好的网站功能体验 可以从以下几个方面进行数据库优化 MySQL数据库优化: 1.SQL语句优化 2.有效的索引 3.数据库的表结构 4.Linux系统配置优化:打开的文件数等 5.硬件:更加适合数据库系统的cpu、更快的io:ssd等、更多的内存... 2-1数据准备 Sakila样本数据库介绍 下载Sakila样本数据库,下载地址http://downloads.mysql.com/docs/sakila-db.tar.gz(下载页面http://dev.mysql.com/doc/index-other.html)。 导入sakila-schema.sql和sakila-data.sql文件 首先下载mysql5. 7 .18 zip安装包,配置环境变量 bin文件夹下建立my.ini [ mysqld ] basedir = E:\Program Files (x86)\mysql - 5.7 . 24 - winx64\mysql - 5.7 . 24 - winx64\bin datadir =

前端不得不说的性能优化

会有一股神秘感。 提交于 2019-12-01 05:04:35
作为一名前端工程师我们除了写得了编程修得了样式之外,我们需要注意的就是如何进行前端性能优化。 先说下前端性能优化的目的,我们从用户角度和服务商角度来说。 1.用户方面:优化能让页面加载更快,对用户的操作响应更及时,能够给用户提供更为友好的体验; 2.服务商方面:优化能够减少页面请求数,或者减少请求所占带宽,能够节省客观的资源 分析完优化目的,下面说说从什么途径进行优化或者说怎么进行优化?优化的方法有哪些? 一、页面级别的优化 1.1 减少http请求数以及减少请求资源的大小 理由:一个完整的HTTP请求需经过以下几个流程:域名解析,DNS寻址 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。整个流程除耗时成本不说若当下载资源过大时,页面加载如何能快?所以减少http请求数有助于提高页面加载速度。 方法: 1,.1.1、 尽量合并和压缩css和js文件。通过打包工具webpack和gulp 1.1.2、 尽量所使用的字体图标或者SVG图标来代替传统png图.因为字体图标或者SVG是矢量图,    代码编写出来的,方大不会变形,而且渲染速度快 1.1.3、 减少DNS查找 1.1.4

Linux性能优化实战

微笑、不失礼 提交于 2019-12-01 04:22:36
你是否也曾跟我一样,看了很多书、学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点。但是,面对难题,我们真的就无解了吗? 固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的“拦路虎”。在我看来,大多数人对性能问题“投降”,原因可能只有两个。 一个是你没找到有效的方法学原理,一听到“系统”、“底层”这些词就发怵,觉得东西太难自己一定学不会,自然也就无法深入学下去,从而不能建立起性能的全局观。 再一个就是你看到性能问题的根源太复杂,既不懂怎么去分析,也不能抽丝剥茧找到瓶颈。 你可能会想,反正程序出了问题,上网查就是了,用别人的方法,囫囵吞枣地多试几次,有可能就解决了。于是,你懒得深究这些方法为啥有效,更不知道为什么,很多方法在别人的环境有效,到你这儿就不行了。 所以,相同的错误重复在犯,相同的状况也是重复出现。 其实,性能问题并没有你想像得那么难, 只要你理解了应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体性能的全局观, 大多数性能问题的优化就会水到渠成。 我见过很多工程师,在分析应用程序所使用的第三方组件的性能时,并不熟悉这些组件所用的编程语言,却依然可以分析出线上问题的根源,并能通过一些方法进行优化,比如修改应用程序对它们的调用逻辑,或者调整组件的配置选项等。

MySQL 数据库性能优化之缓存参数优化

戏子无情 提交于 2019-12-01 03:59:18
MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化。 query_cache_size/query_cache_type (global) Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 ResultSet,也就是一条SQL语句执行的结果集,所以仅仅只能针对select语句。当我们打开了 Query Cache 功能,MySQL在接受到一条select语句的请求后,如果该语句满足Query Cache的要求(未显式说明不允许使用Query Cache,或者已经显式申明需要使用Query Cache),MySQL 会直接根据预先设定好的HASH算法将接受到的select语句以字符串方式进行hash,然后到Query Cache 中直接查找是否已经缓存。也就是说,如果已经在缓存中,该select请求就会直接将数据返回,从而省略了后面所有的步骤(如 SQL语句的解析

读书笔记《C++性能优化指南》(1) - 综述

北战南征 提交于 2019-12-01 02:12:08
软件优化的必要性; 1. 优化为软件开发的一部分 2. 优化是高效的且可持续的 3. 软件的活力、生命周期的延续 改善代码性能的一些策略: 1. 使用更好的编译器以及编译选项 2. 使用最优算法 3. 使用更好的库并用好库 4. 减少内存分配和复制操作 5. 移除不必要的计算操作,优化热点代码 6. 使用最优的数据结构 7. 提高并发性以更快地处理 8. 优化内存管理 影响优化的计算机的行为; 1. C++中的执行语句、执行顺序不一定是顺序的,编译器可能会重排执行指令,另外并发也会导致执行顺序的进一步复杂化 2. volatile变量、std::atomic特性等都由操作系统来隐藏实现的 3. 计算机的内存操作,如读写其实是比较慢的且并不是以字节为单位访问的,而是一大块的数据读写的以补偿内存操作慢的问题, 此外内存未对齐的字节(不在同一个字)访问耗时是字节在同一个字中时的两倍多 4. 除了读大块数据外,内存还有多级高速缓存来弥补(尤其是频繁访问的内存地址),紧挨的指令或数据结构如数组等更容易放入缓存(链表或树则会比较慢对缓存作用帮助不大,可能会更慢) 5. 字节序的问题,大端和小端模式 6. 虚拟内存模拟无限物理内存,读写磁盘文件到内存耗时较高;此外程序访问的内存比较分散时可能出现页抖动,减低了性能 来源: https://www.cnblogs.com/haomiao/p