请问JAKE是否考虑引入“项目编译”功能?

#1 vsxp

所谓的项目编译机制是指系统第一次运行的时候会自动生成核心缓存文件~runtime.php和项目编译缓存文件~app.php,这些编译缓存文件把核心和项目必须的文件打包到一个文件中,并且去掉所有空白和注释代码,因为存在一个预编译的过程,所以还会进行一些相关的目录检测,对于不存在的目录可以自动生成,这个自动生成机制后面还会提到。当第二次执行的时候就会直接载入编译过的缓存文件,从而省去很多IO开销,加快执行速度。项目编译机制对运行没有任何影响,预编译操作和其他的目录检测机制只会执行一次,因此无论在预编译过程中做了多少复杂的操作,对后面的执行没有任何效率的缺失。

2011-01-25 13:23:58

#2 jake

这个有想过,不过你也可以看到,除了tp之外,开源程序鲜有这样做的。理由如下:
1. speedphp的载入过程,刚开始载入四个文件,而文件比较小,所以不会是“省去很多IO开销”。而且目前现代操作系统而言,载入文件也是按需获取的。另:tp合成的那个文件,很大,比几个文件合起来都大。
2. 现在的PHP编译器,会自动压缩代码并且执行,这才是真正的编译。在前些年的一些程序里面,的确流行“PHP是边读边编译”的说法,也有些程序会做这种“预编译”,不过也是比较少数,因为在大部分PHPer的实际工作中可以看到,这改进省下的资源实在太少了
3. PHP真正的预编译,zend等程序会把PHP程序优化到最好的程度,可以让程序员不必考虑底层编译过程来写程序。所以本身PHP程序的大小,并不是瓶颈所在,看看discuz,wordpress就能明白。

2011-01-25 13:49:34

#3 vsxp

感谢回复!

2011-01-25 14:04:33