仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1427|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网站制作之php5.4 Zend引擎的优化

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:34:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,皮皮我的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。     
    在PHP 5.4的更新list上, 有一句: 提拔了Zend引擎的功能, 削减了内存占用.
    那末, 究竟是怎样提拔的呢?
    防止不用要的Hashtable
    咱们晓得在PHP中, 类的属性/静态属性/常量, 都是保留在Hashtable中的, 而在之前, 即便一个类没有声名属性/静态属性/常量, Zend引擎也会为他们分派Hashtable.
    而在如今, 这个进程被优化了, 只要在有元素的时分才会分派Hashtable.
    如许就防止一些emalloc/efree操作, 削减一些内存占用.
    四元式优化
    在PHP中, 真正履行的是Opcodes, 一个Opcodes包括3个固定的操作数, result, left, right, 在之前, 这三个操作数每个都包括一个zval, 即便基本用不到的时分, 好比没有右操作数的时分, 还会为右操作数分派一个zval.
    而在如今, 一切的操作数将不再直接包括zval, 而是包括一个literal table的指针, 每个op array城市包括一个literal table.
    而且znode也做了响应的调剂.
    如许一来, 也能削减一些内存占用. 从之前的(32位操作体系)一个opcode占用72byte, 到如今的28byte.
    别的, 关于string, literal table还会保留一份这个string的事后盘算的hash值, 防止了在运转时屡次盘算. 从而进步一局部功能.
    字面字符串
    就仿佛C言语中, 代码中的字面字符串, 会保留在一个固定段内(数据段), 在全部履行时代, 这些字符串都是常量字符串,不克不及被修正,不克不及被free.
    PHP也自创了如许的思惟, 提出一个Internal string的概念, 在PHP代码中的字面量字符串, 将会一次分派, 并前在全部履行期都不克不及被修正.
    PHP在copy_zval, free zval等操作的时分, 会对internal string出格处置, 防止不用要的free和复制.
    而且这些字面量字符串的hash值将会被事后盘算, 如许一来, 关于字符串对照 ==, 和hashtable中的hash盘算来讲, 都可以直接利用这个事后盘算的hash值, 从而能进步一局部功能.
    其他
    固然, 还有良多优化点, 好比优化了opcode, 削减了一些不用要的opcodes, 在此就纷歧一赘述了.
    对照
    上面是PHP开辟小组外部测试的一些数据:
    原生PHP, 没有Opcode Cache:
    php-trunkpatchedinprovement
    bench.php (sec)4.313.4919%
    micro_bench.php (sec)19.7814.6326%
    一些实践的使用:
    php-trunkpathcedimprovement
    blog (req/sec)59.366.212%
    drupal (req/sec)1073.91084.81%
    fw (req/sec)105.3111.86%
    hello (req/sec)5362.55351.40%
    qdig (req/sec)243.4253.74%
    typo3 (req/sec)355.3382.68%
    wordpress (req/sec)101.8108.57%
    xoops (req/sec)70.378.512%
    scrum (req/sec)86.5104.220%
    从这些数据来看, 功能提拔仍是很分明的..
要想从事软件开发工作,那么,还有很多的知识要学习,其实,不管是以后想去从事哪个工作,都需要自己去利用空闲的时间去不断的学习新的知识,不断的充实自己。
乐观 该用户已被删除
沙发
发表于 2015-2-4 02:26:06 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
透明 该用户已被删除
板凳
发表于 2015-2-9 11:04:25 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
admin 该用户已被删除
地板
发表于 2015-2-10 22:06:24 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
变相怪杰 该用户已被删除
5#
发表于 2015-3-1 16:01:42 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
冷月葬花魂 该用户已被删除
6#
发表于 2015-3-8 04:21:00 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
莫相离 该用户已被删除
7#
发表于 2015-3-12 10:22:47 | 只看该作者
做为1门年轻的语言,php一直很努力。
若天明 该用户已被删除
8#
发表于 2015-3-17 19:10:58 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-20 01:04:35 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
谁可相欹 该用户已被删除
10#
发表于 2015-3-22 20:38:29 | 只看该作者
爱上php,他也会爱上你。
金色的骷髅 该用户已被删除
11#
发表于 2015-4-9 18:01:28 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
爱飞 该用户已被删除
12#
发表于 2015-4-10 02:55:42 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
若相依 该用户已被删除
13#
发表于 2015-4-14 13:49:03 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
活着的死人 该用户已被删除
14#
发表于 2015-4-23 23:56:48 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
灵魂腐蚀 该用户已被删除
15#
发表于 2015-4-25 00:13:07 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
海妖 该用户已被删除
16#
发表于 2015-4-26 08:11:58 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
再现理想 该用户已被删除
17#
发表于 2015-5-2 21:23:56 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
因胸联盟 该用户已被删除
18#
发表于 2015-5-4 02:06:08 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
第二个灵魂 该用户已被删除
19#
发表于 2015-5-4 05:13:03 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
柔情似水 该用户已被删除
20#
发表于 2015-6-24 22:02:45 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-19 19:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表