仓酷云

标题: PHP网页设计Zend引擎的优化 [打印本页]

作者: 变相怪杰    时间: 2015-2-16 00:22
标题: PHP网页设计Zend引擎的优化
会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!      在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-trunk  patched  inprovement bench.php (sec) 4.31 3.49 19% micro_bench.php (sec) 19.78 14.63 26%  一些实践的使用:
     php-trunk  pathced  improvement blog (req/sec) 59.3 66.2 12% drupal (req/sec) 1073.9 1084.8 1% fw (req/sec) 105.3 111.8 6% hello (req/sec) 5362.5 5351.4 0% qdig (req/sec) 243.4 253.7 4% typo3 (req/sec) 355.3 382.6 8% wordpress (req/sec) 101.8 108.5 7% xoops (req/sec) 70.3 78.5 12% scrum (req/sec) 86.5 104.2 20%  从这些数据来看, 功能提拔仍是很分明的..
在相册系统的开发上,因为采用的是团队分工合作方式,更让我明白了在一个团队之中,团队成员之间的交流沟通的重要性,如果没有很好的沟通交流,成员之间的任务没有分配好。
作者: admin    时间: 2015-2-16 00:32
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 再现理想    时间: 2015-2-20 23:39
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 再见西城    时间: 2015-3-6 19:01
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 兰色精灵    时间: 2015-3-13 06:08
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 蒙在股里    时间: 2015-3-13 06:08
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
作者: 海妖    时间: 2015-3-16 04:10
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 分手快乐    时间: 2015-3-17 02:09
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 老尸    时间: 2015-3-21 17:31
做为1门年轻的语言,php一直很努力。
作者: 简单生活    时间: 2015-3-27 11:51
做为1门年轻的语言,php一直很努力。
作者: 柔情似水    时间: 2015-3-31 16:51
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 只想知道    时间: 2015-4-9 15:01
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 精灵巫婆    时间: 2015-4-13 02:42
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 活着的死人    时间: 2015-4-18 05:49
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 乐观    时间: 2015-4-26 05:11
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者: 飘飘悠悠    时间: 2015-4-26 12:56
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 深爱那片海    时间: 2015-4-26 14:21
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 若相依    时间: 2015-4-26 16:11
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者: 因胸联盟    时间: 2015-5-1 06:20
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者: 山那边是海    时间: 2015-6-19 21:33
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2