性能优化

Linux性能优化从入门到实战:04 CPU篇:CPU使用率

时间秒杀一切 提交于 2019-11-28 01:24:53
   CPU使用率 是单位时间内CPU使用情况的统计,以百分比方式展示。 $ top top - 11:46:45 up 7 days, 11:52, 1 user, load average: 0.00, 0.01, 0.00 Tasks: 198 total, 1 running, 197 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 4044232 total, 420136 free, 1061244 used, 2562852 buff/cache KiB Swap: 1046524 total, 1043128 free, 3396 used. 2619124 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 921 root 20 0 531332 138408 58972 S 0.7 3.4 41:31.24 Xorg    参数解析 如下: %user(us),代表用户态 CPU 时间。不包括下面的 nice 时间,但包括了 guest 时间。 %nice(ni),代表低优先级用户态 CPU 时间,也就是进程的

Linux性能优化从入门到实战:01 Linux性能优化学习路线

大城市里の小女人 提交于 2019-11-28 01:23:33
  我通过阅读各种相关书籍,从操作系统原理、到 Linux内核,再到硬件驱动程序等等。   把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序、库函数、系统调用、再到内核和硬件等不同的层级贯穿起来。    性能优化 是个系统工程,总是牵一发而动全身,它涉及了从程序设计、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都有可能出问题,而且很有可能多个组件同时出问题。   讲解 Linux 性能的基本指标、工具,以及相应的观测、分析和调优方法。包括 CPU 性能、磁盘 I/O 性能、内存性能以及网络性能。      系统性能问题,只要你理解了应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体性能的全局观。    性能指标 :“高并发”和“响应快”是从应用负载的视角来考察性能,直接影响了产品终端的用户体验。也正对应着性能优化的两个核心指标——“吞吐”和“延时”。   随着应用负载的增加,系统资源的使用也会升高,甚至达到极限。而 性能问题的本质 ,就是系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。性能分析,其实就是找出应用或系统的瓶颈,并设法去避免或者缓解它们,从而更高效地利用系统资源处理更多的请求。    性能分析六个步骤 :(1) 选择指标评估应用程序和系统的性能; (2)为应用程序和系统设置性能目标; (3

前端性能优化 —— reflow(回流/重排)和repaint(重绘)

纵饮孤独 提交于 2019-11-28 01:17:37
简要: 整个在浏览器的渲染过程中(页面初始化,用户行为改变界面样式,动画改变界面样式等)reflow(回流)和repaint(重绘) 会大大影响web性能,尤其是手机页面。因此我们在页面设计的时候要尽量减少reflow和repaint。 什么是reflow和repaint(原文链接:http://www.cnblogs.com/Peng2014/p/4687218.html) reflow:例如某个子元素样式发生改变,直接影响到了其父元素以及往上追溯很多祖先元素(包括兄弟元素),这个时候浏览器要重新去渲染这个子元素相关联的所有元素的过程称为回流。 reflow:几乎是无法避免的。现在界面上流行的一些效果,比如树状目录的折叠、展开(实质上是元素的显 示与隐藏)等,都将引起浏览器的 reflow。鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲 染。通常我们都无法预估浏览器到底会 reflow 哪一部分的代码,它们都彼此相互影响着。 repaint: 如果只是改变某个元素的背景色、文 字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器 repaint(重绘)。 repaint 的速度明显快于 reflow 下面情况会导致reflow发生 1:改变窗口大小 2:改变文字大小 3:内容的改变

Android进阶-Android性能优化总结

孤街醉人 提交于 2019-11-28 00:21:40
一、Android性能优化的方面 针对Android的性能优化,主要有以下几个有效的优化方法: 1.布局优化 2.绘制优化 3.内存泄漏优化 4.响应速度优化 5.ListView/RecycleView及Bitmap优化 6.线程优化 7.其他性能优化的建议 下面我们具体来介绍关于以上这几个方面优化的具体思路及解决方案。 二、布局优化 关于布局优化的思想很简单,就是尽量减少布局文件的层级。这个道理很浅显,布局中的层级少了,就意味着Android绘制时的工作量少了,那么程序的性能自然就提高了。 如何进行布局优化? ①删除布局中无用的控件和层次,其次有选择地使用性能比较低的ViewGroup。 关于有选择地使用性能比较低的ViewGroup,这就需要我们开发就实际灵活选择了。 例如:如果布局中既可以使用LinearLayout也可以使用RelativeLayout,那么就采用LinearLayout,这是因为RelativeLayout的功能比较复杂,它的布局过程需要花费更多的CPU时间。FrameLayout和LinearLayout一样都是一种简单高效的ViewGroup,因此可以考虑使用它们,但是 很多时候单纯通过一个LinearLayout或者FrameLayout无法实现产品效果,需要通过嵌套的方式来完成。这种情况下还是建议采用RelativeLayout

网站性能优化:动态缩略图技术实现思路

假装没事ソ 提交于 2019-11-27 23:04:06
  在网站开发过程中,大家都是如何解决多尺寸图片缩略图问题的呢?犹为典型的是电商网站,据了解,淘宝的图片缩略图是直接存储多张缩略图的方式,以满足各种情况下使用,因为它有牛逼的开源+自主开发的海量图片存储架构作支撑。但是,我们在做网站时,并不可能直接搬牛逼的架构过来,就可以达到预期的效果,况且各种成本投入也是有限的。所以一般性能优化的原则大都是这样:先考虑软件的优化,再考虑硬件的升级,当然土豪客户则除外。   很多网站可能没有对图片进行缩略图处理,上传时图片可能几百KB,在页面也是直接加载几百KB的图片大小,这样极为占用带宽,影响网站加载速度。也有很多网站的做法可能也是直接根据前端页面所需求图片的尺寸,在上传时就处理生成相应尺寸的缩略图,但如果前端页面布局进行调整时,可能就得调整缩略图生成的尺寸,之前生成的图片也有可能需要重新生成。之前我在一个网站项目时就遇到这样的问题,经过一系列地验证,最终是采用动态缩略图技术解决的,现在整理出来给大家分享分享。   其实,原理很简单,通过高性能的图片压缩算法,在一般处理程序(HttpHandler)对图片进行压缩处理,图片路径则直接指向HttpHandler,将图片路径、需要压缩的宽高等参数传进去,实现动态压缩。   在网站目录下新建 ResizeImage.ashx 文件,代码如下: 1 using System; 2 using System

前端性能优化 - 资源预加载

主宰稳场 提交于 2019-11-27 23:02:52
提到前端性能优化时,我们首先会联想到文件的合并、压缩,文件缓存和开启服务器端的 gzip 压缩等,这使得页面加载更快,用户可以尽快使用我们的 Web 应用来达到他们的目标。 资源预加载:是另一个性能优化技术,我们可以使用该技术来预先告知浏览器某些资源可能在将来会被使用到。 引用 Patrick Hamann 的 解释 : 预加载是浏览器对将来可能被使用资源的一种暗示,一些资源可以在当前页面使用到,一些可能在将来的某些页面中被使用。作为开发人员,我们比浏览器更加了解我们的应用,所以我们可以对我们的核心资源使用该技术。 这种做法曾经被称为 prebrowsing ,但这并不是一项单一的技术,可以细分为几个不同的技术: DNS-prefetch 、 subresource 和标准的 prefetch 、 preconnect 、 prerender 。   DNS 预解析 DNS-Prefetch 通过 DNS 预解析来告诉浏览器未来我们可能从某个特定的 URL 获取资源,当浏览器真正使用到该域中的某个资源时就可以尽快地完成 DNS 解析。 例如,我们将来可能从 example.com 获取图片或音频资源,那么可以在文档顶部的 <head> 标签中加入以下内容: <link rel="dns-prefetch" href="//example.com"> 当我们从该 URL

C#性能优化总结

梦想的初衷 提交于 2019-11-27 22:52:06
1. C# 语言方面 1.1 垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。 1.1.1 避免不必要的对象创建 由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情形。 1.1.1.1 避免循环创建对象 ★ 如果对象并不会随每次循环而改变状态,那么在循环中反复创建对象将带来性能损耗。高效的做法是将对象提到循环外面创建。 1.1.1.2 在需要逻辑分支中创建对象 如果对象只在某些逻辑分支中才被用到,那么应只在该逻辑分支中创建对象。 1.1.1.3 使用常量避免创建对象 程序中不应出现如 new Decimal(0) 之类的代码,这会导致小对象频繁创建及回收,正确的做法是使用Decimal.Zero常量。我们有设计自己的类时,也可以学习这个设计手法,应用到类似的场景中。 1.1.1.4 使用 StringBuilder 做字符串连接 1.1.2 不要使用空析构函数 ★ 如果类包含析构函数,由创建对象时会在 Finalize 队列中添加对象的引用,以保证当对象无法可达时,仍然可以调用到 Finalize 方法。垃圾回收器在运行期间,会启动一个低优先级的线程处理该队列。相比之下,没有析构函数的对象就没有这些消耗。如果析构函数为空,这个消耗就毫无意 义,只会导致性能降低!因此

常用的ASP.net性能优化方法.doc

微笑、不失礼 提交于 2019-11-27 22:51:51
ASP.NET中常用的优化性能方法 收藏 1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。连接池的大小是有限的, R1 如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间 ,避免出现超出连接限制的情况。 使用存储过程 存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。 优化查询语句 ASP.NET中ADO连接消耗的资源相当大,SQL语句运行的时间越长,占用系统资源的时间也越长。因此, R2 尽量使用优化过的 SQL 语句以减少执行时间。比如

MySQL 性能优化

a 夏天 提交于 2019-11-27 22:18:03
1. SQL语句优化 1.1 Sakila示例数据库安装 Sakila 数据库是 MySQL 官方提供的示例数据库,常用来做测试。 https://dev.mysql.com/doc/sakila/en/sakila-installation.html 1、下载 sakila database : https://dev.mysql.com/doc/index-other.html 2、解压后会得到三个文件: sakila-schema.sql :用于创建表结构和数据库 sakila-data.sql :用于插入数据 sakila.mwb 3、进入 MySQL 中,创建数据库、数据表以及插入数据: # 将路径替换成你自己的路径 mysql -u root -p # 创建表结构 source C:/Users/hj/Desktop/sakila-db/sakila-db/sakila-schema.sql # 插入数据 source C:/Users/hj/Desktop/sakila-db/sakila-db/sakila-data.sql 1.2 慢查询 如何发现有问题的 SQL?使用 mysql 慢查询日志对有效率问题的 SQL 进行监控: # 查看慢查询日志是否开启,off 为关闭 show variables like 'slow_query_log'; # 查看 log

前端性能优化----优化方法

旧巷老猫 提交于 2019-11-27 16:07:14
提到前段性能优化,不可避免的都会想到如下的解决方案: (1)减少HTTP请求(合并css、js,雪碧图/base64图片、CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。) (2)压缩(css、js、图片等前端资源皆可压缩,通常是由服务器来解决) (3)图片预加载,将样式表放头部,脚本放底部加上时间戳 (4)使用CDN,采用CDN来加速资源加载(这部分,不少前端都不用考虑,负责发布的兄弟可能会负责搞好) (5)缓存…… (6)程序的性能优化(如:数据读写) (7)对于JS DOM的优化(用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。) (8)少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。 (9)HTTP的服务器的文件优化 (10)当需要设置的样式很多时设置className而不是直接操作style。 (11)避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。 (12)避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢 来源: https://www.cnblogs.com/syw20170419/p/11937713.html