PHP优化——从语言到业务】的更多相关文章

经常有人说php速度慢,其实语言层面的速度差异和实际的业务相比,不在一个数量级. 业务的瓶颈往往在于io,而不是CPU. 0x0 语言 语法 单引号和双引号 单引号不解析字符串里的变量,而双引号会解析,如果需要大量处理字符串,建议用单引号和字符串连接符"." === 和 == "=="会进行类型转换,比如"1"和1 ,用"=="为真,而"==="为假,如果类型相同的话,使用"==". 合…
原文链接:https://www.cockroachlabs.com/blog/how-to-optimize-garbage-collection-in-go/ 原作者:Jessica Edwards 原文日期:Nov 23, 2015 译:zifeiy 几个星期之前,我们分享了一篇关于为什么选择Go语言作为CockroachDB的开发语言的 文章 ,在编写那篇文章那篇文章时候我们收到了很多问题和反馈,主要是关于Go鱼焉已知的问题,特别是与性能.垃圾收集和死锁相关的问题. 在这篇文章中,我们将…
第1章数据模型设计 第1条:确保所有表都有主键 [1]当表缺少主键时,会出现各种问题,所有表都必须有一列(或多列)设置为主键. [2]主键应当具备的特征 唯一性,值非空,不可变,尽可能简单 [3]不要使用复合主键,效率太低 定义主键时,大多数数据库会同时强制创建唯一索引 适用主键做连接查询很常见,但是在具有多个列的主键上这样做很复杂,效率也很低 [4]如果不希望非键列出现重复数据,在列上定义唯一索引以保证其完整性. 第2条:避免存储冗余数据 [1]规范化是按照不同的主题将信息分类,以避免冗余数据…
1.选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍.将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序.合并排序或根排序代替,都可以大大提高程序执行的效率.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多.数组与指针语句具有十分密码的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解.对于大部分的编译器,使用指针比使用数组…
如<同样是高并发,QQ/微博/12306的架构难度一样吗?>一文所述,同样是高并发场景,三类业务的架构挑战不一样: QQ类业务,用户主要读写自己的数据,访问基本带有uid属性,数据访问锁冲突较小 微博类业务,用户的feed主页由别人发布的消息构成,数据读写有一定锁冲突 12306类业务,并发量很高,几乎所有的读写锁冲突都集中在少量数据上,难度最大 那么对于秒杀类业务,系统上和业务上分别能如何优化呢,这是本文要讨论的问题. 系统层面,秒杀业务的优化方向如何?主要有两项:(1)将请求尽量拦截在系统…
 iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对复杂一些,导致应用在比如touch等较低端的产品上,光从启动到进入页面就花了将近一分钟的时间,页面之间的切换没有那种很流畅的感觉,内存也居高不下,比较影响应用的用户体验,所以很有必要进行一些优化,下面记录一下我在优化的过程中的一些心得: 1 instruments   在iOS上进行性能分析的时候,…
来源:树下的老男孩 链接:http://www.jianshu.com/p/5cf9ac335aec iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对复杂一些,导致应用在比如touch等较低端的产品上,光从启动到进入页面就花了将近一分钟的时间,页面之间的切换没有那种很流畅的感觉,内存也居高不下,比较影响应用的用户体验,所以很有必要进行一些优化,下面…
我们在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少.往往我们在追求这些的同时却失去了很多东西.下面我想讲讲我对PHP优化的理解.优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码. 进行大范围的优化,而不是死啃某些程序代码 我这里所说的优化,基本上都是从服务器,Apache,数据库这些方面来进行的优化,而并不是对你的PHP代码加以改进从而提高程序的运行速度,因为比起你将程序中的正则优化为字符串处理函数从而提升程序速度来说,在大范围内进行的优化所需要的代价要比这…
我们在用PHP编程的时候,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少.往往我们在追求这些的同时却失去了很多东西.下面我想讲讲我对PHP优化的理解.优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码. 进行大范围的优化,而不是死啃某些程序代码 我这里所说的优化,基本上都是从服务器,Apache,数据库这些方面来进行的优化,而并不是对你的PHP代码加以改进从而提高程序的运行速度,因为比起你将程序中的正则优化为字符串处理函数从而提升程序速度来说,在大范围内进行的优化所需要的代…
  前言: 在之前“影响 MySQL 应用系统性能的相关因素”一章中我们就已经分析过了Query语句对数据库性能的影响非常大,所以本章将专门针对 MySQL 的 Query 语句的优化进行相应的分析. 8.1 理解MySQL的Query Optimizer 8.1.1 MySQL Query Optimizer是什么? 在“MySQL 架构组成”一章中的 “MySQL 逻辑组成”一节中我们已经了解到,在MySQL中有一个专门负责优化SELECT 语句的优化器模块,这就是我们本节将要重点分析的My…
需求分析 目前的业务全站使用ThinkPHP 3.2.3,前台.后台.Cli.Api等.目前的业务API访问量数千万,后端7台PHP 5.6,平均CPU使用率20%. 测试数据 真实业务 php5.6:500 QPS php7.0:850 QPS 真实业务中减少一次Mysql查询业务或者减少一次Redis读写 php5.6:800 QPS php7.0:1250 QPS 目前优化的结果: ThinkPHP可以完整的跑在缓存中: 在不需要mysql查询时,不建立mysql连接: 不读写redis时…
你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧. 最近“全网域(Web Scale)”一词被炒得火热,人们也正在通过扩展他们的应用程序架构来使他们的系统变得更加“全网域”.但是究竟什么是全网域?或者说如何确保全网域? 扩展的不同方面 全网域被炒作的最多的是扩展负载(Scaling load),比如支持单个用户访问的系统也可以支持10 个.100个.甚至100万个用户访问.在理想情况下,我们的系统应该保…
第8章 MySQL数据库Query的优化 前言: 在之前“影响 MySQL 应用系统性能的相关因素”一章中我们就已经分析过了Query语句对数据库性能的影响非常大,所以本章将专门针对 MySQL 的 Query 语句的优化进行相应的分析.     8.1 理解MySQL 的Query Optimizer      8.1.1 MySQL Query Optimizer 是什么? 在“MySQL 架构组成”一章中的 “MySQL 逻辑组成”一节中我们已经了解到,在MySQL中有一个专门负责优化SE…
有些小细节往往容易被人忽视.有时候常常说优化代码优化代码,但是实际操作的时候,最容易被忽视的如下所示: echo 比 print 快. 使用echo的多重参数代替字符串连接. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替. 对global变量,应该用完就unset()掉. 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会. 函数代替正则表达式完成相同功能. 当执行变量$i的递增或递减时,$i+…
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open-source-projects  . 欢迎fork, star , watch, 提issue. 资料参考来源:http://studygolang.com/projects 监控系统 序号 名称 项目地址 简介 1 OpenFalcon http://github.com/open-falcon/…
10种简单的Java性能优化 2015/06/23 | 分类: 基础技术 | 14 条评论 | 标签: 性能优化 分享到: 本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加入翻译小组.转载请见文末要求. 你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧. 最近“全网域(Web Scale)”一词被炒得火热,人们也正在通过扩展他们的应用程序架构来使他们的系统变得更加“全网域”.…
原文连接:https://blog.thinkeridea.com/201906/go/compress_file_io_optimization1.html 最近遇到一个日志备份 io 过高的问题,业务日志每十分钟备份一次,本来是用 Python 写一个根据规则扫描备份日志问题不大,但是随着业务越来越多,单机上的日志文件越来越大,文件数量也越来越多,导致每每备份的瞬间 io 阻塞严重, CPU 和 load 异常的高,好在备份速度很快,对业务影响不是很大,这个问题会随着业务增长,越来越明显,这…
本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加入翻译小组.转载请见文末要求. 你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧. 最近"全网域(Web Scale)"一词被炒得火热,人们也正在通过扩展他们的应用程序架构来使他们的系统变得更加"全网域".但是究竟什么是全网域?或者说如何确保全网域? 扩展的不同方面 全网域被炒作的最多的是扩展负载(…
我们在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少.往往我们在追求这些的同时却失去了很多东西.下面我想讲讲我对PHP优化的理解.优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码.进行大范围的优化,而不是死啃某些程序代码我这里所说的优化,基本上都是从服务器,Apache,数据库这些方面来进行的优化,而并不是对你的PHP代码加以改进从而提高程序的运行速度,因为比起你将程序中的正则优化为字符串处理函数从而提升程序速度来说,在大范围内进行的优化所需要的代价要比这个小…
我们考虑的情况是在你的数据量很大的情况下,千万级别的数据量.不要当我们的请求响应时间已经让我无法忍受的时候,再来想起来优化,可能有点迟了.因为可能会丢失很多潜在的价值客户.所以,在我们当初设计表,或者因为我们的业务的变化而导致的情况下,就要多多考虑去优化我们的MySQL了. 1.在我们的开发中,请务必注意我们的sql书写,可能你的一个sql导致全站挂掉了.所以要优化好我们的sql,这其中不得不说,索引.SQL 的优化和索引 密不可分.优化SQL 一部分是业务逻辑的优化,一部分就是索引的优化.至于…
我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度,浅谈Oracle性能优化的一些看法. 首先对于性能问题,大家先接触的一般都是某个业务功能慢,速度客户无法接受.那对于系统的性能无非如下图所示: 当一个性能问题出现时,很多人都会猜测问题各个方面的原因. 今天主要谈数据库的性能问题,就问题而言,我们针对问题经过数据库性能分析,发现数据库性能存在问题…
任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结起来,大家遇到的主要问题无非是Full GC异常导致宕机问题.RIT问题.写吞吐量太低以及读延迟较大. Full GC问题之前在一些文章里面已经讲过它的来龙去脉,主要的解决方案目前主要有两方面需要注意,一方面需要查看GC日志确认是哪种Full GC,根据Full GC类型对JVM参数进行调优,另一方…
作者:哈哈链接:https://www.zhihu.com/question/19719997/answer/81930332来源:知乎著作权归作者所有,转载请联系作者获得授权. 第一优化你的sql和索引: 第二加缓存,memcached,redis: 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护: 第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这…
一.查询语句的生命周期 1.MYSQL服务器监听3306端口 2.验证访问用户 3.创建MySQL线程 4.检查内存(Qcache),当查询命中缓存,MYSQL立刻返回结果,跳过解析.优化.执行阶段.若没有缓存,则继续以下步骤: 5.解析SQL 6.生成查询计划 7.打开表 8.检查内存(Buffer Pool) 9.到磁盘取数据 10.写入内存 11.返回数据给客户端 12.关闭表 13.关闭线程 14.关闭连接 二.MYSQL架构 三.MYSQL连接数 MYSQL默认最大连接数是100,在大…
本文总结了一些工作常见的sql优化例子,虽然比较简单,但很实用,希望对大家有所帮助.sql优化一般分为两类,一类是sql本身的优化,如何走到合适的索引,如何减少排序,减少逻辑读:另一类是sql本身没有优化余地,需要结合业务场景进行优化.即在满足业务需求的情况下对sql进行改造,已提高sql执行速度,减少响应时间. 例子1: SELECT ID FROM SENDLOG WHERE TO_DAYS(NOW())-TO_DAYS(GMT_CREATE) > 7; 问题:对索引列GMT_CREATE进…
作者:哈哈链接:http://www.zhihu.com/question/19719997/answer/81930332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 很多人第一反应是各种切分:我给的顺序是:第一优化你的sql和索引: 第二加缓存,memcached,redis: 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护: 第四如果以…
原来使用MySql处理的数据量比较少,小打小闹的,没有关注过性能的问题.最近要处理的数据量飙升,每天至少20W行的新增数据,导致MySql在性能方面已经是差到不可用的地步了,必须要重视MySql的优化了. 经验借鉴 在不涉及到join查询的情况下,单个表的体积大于2g的时候,需要进行分表存储(这时表的行数应该在1000W左右,如果包含字符串类型,大约是500W行左右). 单个数据库的表数量要控制到300或400以内(赶集网DBA的说法,还有说控制到128个以内的). 使用InnoDB引擎时,in…
上章回顾 编码的规范和程序版式 版权管理和申明 头文件结构和作用 程序命名 程序注释和代码布局规范 assert断言函数的应用 与0或NULL值的比较 内存的分配和释放细节,避免内存泄露 常量特性 git@github.com:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.gitgit@github.com:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第九章 第九…
Join 的实现原理 在MySQL 中,只有一种Join 算法,也就是Nested Loop Join,没有其他很多数据库所提供的Hash Join,也没有Sort Merge Join.顾名思义,Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果.如果还有第三个参与Join,则再通过前两个表的Join 结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复. 下面…
全书文件夹: 一.Welcome to Swift 二.Language Guide 三.Language Reference /* 译者的废话: 几个小时前熬夜看了WWDC,各种激动,今年非常有料啊!当看到Swift出来的时候,瞬间傻眼,又要学习新语言了.这篇文章来自苹果官方的<The Swift Programming Language>一书,500页左右,在苹果官网有下载.Swift大家都没实际用过,本翻译一定是有各种错漏的,各位多多包涵,我会不断更新修正的. --(博客园.新浪微博)葛…