-1

我不想将 PHP 编译为原生 EXES 或类似的东西,只编译/缓存(这两个词都不能反映我的意思)框架逻辑本身

有没有类似编译的 PHP 框架的东西?

我的意思是以小花为例。它是可扩展的、可覆盖的、有趣的等等。但它最终会加载 200 个文件以显示一页!

我认为最好的是如果你有Controller_Admin extends Controller_Admin_Template extends Controller_Template extends Kohana_Controller_Template extends Controller extends Kohana_Controller. 这不是必需的……如果我们只是将方法体复制粘贴到$parent->whatever()它上面,最终会得到一个漂亮、更小、更快的文件。

我们已经为 JS 和 CSS 做到了,以最大限度地减少资源下载;为什么不是整个框架?:D

我也在寻找一个可编译的ORM。Kohana ORM 非常……慢……它使用魔法方法,加载表格,通常使用起来很有趣,但在服务器的电路中……很痛苦。:P

如果我们可以在生产服务器ORM::factory('test')->compiled()->where('bla','=','1)->execute();中编译ORMC::factory('test','SELECT * FROM test WHERE bla=1')->execute();它会很酷。这适用于除 ORM 之外的许多其他东西,但 ORM 会受益匪浅。

在我看来,动态框架的开销似乎并没有因为易用性而倾斜。有了这个,我们不会失去任何轻松并加快速度。;)

所以我的问题是:这样的事情存在吗?如果不是,我的逻辑是否有缺陷?


编辑:

由于答案失败,我会更直接地展示我想做的事情。

我们有一个 /application/ ,其中有与没有“编译”的完全相同的代码,还有一个 /compiled_app/ ,其中所有(例如)可以简化的查询都是简化的(不是对象 Query_Builder 而是SELECT blablablabla等)。

同样,一个类有 50 个文件会增加很多 umm... 覆盖向量?:D 这是一个不必要的 100% 保证瓶颈性能开销。也许它并不多,但它总是在那里。它没有必要。

4

3 回答 3

1

PHP 是一种解释性语言,因此不能编译。

有 APC 将 PHP 代码动态编译成 Zend 引擎执行的字节码并缓存它。这可以获得相当多的性能,但它有缺点和限制。

不过老实说,你所要求的听起来很像过早的优化。决定代码运行速度的最大因素是算法的选择。对一百万条记录进行编译的冒泡排序仍将比对相同数量记录的未编译快速排序慢。PHP 应用程序还倾向于花费大量时间与外部系统(例如数据库)进行通信。您根本无法通过编译 PHP 来优化此类活动。无论 PHP 是否被编译,一个需要 10 秒的查询将需要 10 秒。

如果您的应用程序存在性能问题,那么它正在执行的 SQL 查询通常是优化的一个很好的起点。许多 PHP 代码执行过多的查询,在循环中执行查询,或者查询应用程序随后不做任何事情的数据。找到并消除这些将无休止地加速您的应用程序。

但是,重要的是要注意,您永远不应该通过猜测瓶颈在哪里来优化您的代码。使用像 XDebug 这样的工具来生成运行代码的配置文件,然后分析他的输出以确定代码中的热点在哪里。

最重要的是,如果您没有性能问题,那么为了优化本身而进行优化就是浪费时间。过早的优化会浪费开发人员的时间,它往往会降低源代码的可读性和难以维护,并且有引入错误的趋势。仅在证明需要时才进行优化。

于 2012-05-14T06:31:41.900 回答
1

您可以查看Flow3框架及其工作原理。它不是你真正想要的,但也许你会觉得它很有趣。

于 2012-05-14T06:39:15.157 回答
-1

您可以检查Yaf。它是一个编译为 PHP 扩展的框架。你听说过嘻哈吗?它可以将整个 PHP 应用程序编译成一个二进制文件。

于 2012-05-14T05:53:37.733 回答