首页 >php教程 >php手册 >PHP对程序员的要求更高

PHP对程序员的要求更高

WBOY
WBOY原创
2016-06-06 19:50:25816浏览

今天是愚人节, 但我这个文章标题可不是和大家开玩笑. 首先, 大家都知道, PHP 也是一种编译型脚本语言, 和其他的预编译型语言不同, 它不是编译成中间代码, 然后发布.. 而是每次运行都需要编译.. 为此, 也就有了一些 Opcode Cacche, 比如开源的 APC, ea

PHP对程序员的要求更高

  今天是愚人节, 但我这个文章标题可不是和大家开玩笑. 

  首先, 大家都知道, PHP 也是一种编译型脚本语言, 和其他的预编译型语言不同, 它不是编译成中间代码, 然后发布.. 而是每次运行都需要编译..

  为此, 也就有了一些 Opcode Cacche, 比如开源的 APC, eacc. 还有商业的 Zend O+ 等.

  那么为什么 PHP 不把编译/执行分开呢?

  PHP 虽然是一种编译型脚本语言, 但是它的编译速度非常快, 它的编译不做任何优化, 就是简单的忠实的把你所写的代码翻译成对应的 Opcodes. 而其他语言因为在编译器做很多的优化工作, 会造成编译比较重, 也一定程度上要求它们分离.

  所以, 理论上来说, 通过编译执行分离, 想达到源码加密, 是不会有什么太大收效的, 因为它很容易被反向。

  另外, 编译直接分离, 并不会带来特别大的收益, 反而会降低调试部署的效率(想想, 修改, 编译, 发布, 看效果), 并且 APC 等优化工具, 已经很成熟了..

  到这里, 请大家注意这句:”它的编译不做任何优化”….

  这也就是我为什么说, PHP 对程序员的要求更高, 不同于其他的编译型语言, PHP 在编译的时候不会帮你做一些优化, 比如对于如下的代码:

    <span>for</span> (<span>$i</span>=0;<span>$i</span>strlen(<span>$j</span>);<span>$i</span>++) {<br>    }

  如果对于 C 或者 Java 等其他语言, 它也许会帮你做优化, 把 strlen 提取到前面去, 只做一次就够了. 而对于 PHP 来说, 它在编译的时候不做任何优化, 也就是说, 你的 strlen, 会被调用很多次.

  再比如:

    <span>$table</span> = "table";<br>    <span>while</span>(++<span>$i</span>       <span>$sql</span> = "select * from" . <span>$table</span> . "where id = " . <span>$i</span>;<br>    }

  没错, “select * from ” . $table 会被 concat 1000 次..

  可见, PHP 的程序员, 需要认真的想好, 你的代码会怎么被执行, 你怎么写代码, 最终的执行效率才最高. 而不像其他的语言, 程序员可以把一部分优化工作交给编译器.

  这也就是我为什么说:”PHP 对程序员的要求更高” 的原因.

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn