-1

PHPをネイティブEXEまたはそのようなものにコンパイルしたくはありません。コンパイル/キャッシュのみ(どちらの単語も私の意味を反映していません)フレームワークロジック自体

コンパイルされたPHPフレームワークのようなものはありますか?

私が言いたいのは、コハナを例に取ってみることです。拡張可能、オーバーライド可能、楽しいなどです。しかし、1ページを表示するために200個のファイルをロードすることになります。

私が一番いいと思うのは、あなたが持っているかどうかですController_Admin extends Controller_Admin_Template extends Controller_Template extends Kohana_Controller_Template extends Controller extends Kohana_Controller。これは必要ありません...メソッド本体をコピーして貼り付けるだけ$parent->whatever()で、1つの素敵な、より小さく、より高速なファイルになります。

ダウンロードされたアセットを最小限に抑えるために、JSとCSSではすでにそれを行っています。なぜフレームワーク全体ではないのですか?:D

また、コンパイル可能なORMを探しています。コハナORMは非常に...遅い...それは魔法の方法を使用し、テーブルをロードし、一般的に操作するのは楽しいですが、サーバーの...回路に苦痛を与えます。:P

本番サーバーでORM::factory('test')->compiled()->where('bla','=','1)->execute();コンパイルできるとしたら、それはすばらしいことです。ORMC::factory('test','SELECT * FROM test WHERE bla=1')->execute();これはORM以外の多くのものにも当てはまりますが、ORMには大きなメリットがあります。

私の意見では、動的フレームワークのオーバーヘッドは、使いやすさによってスケールを傾けているようには見えません。これにより、私たちは容易さを失うことはなく、それを大幅にスピードアップします。;)

だから私の質問は:このようなものは存在しますか?そうでない場合、私のロジックに欠陥がありますか?


編集:

答えが失敗したので、私がやりたいことをもっとまっすぐに示します。

「コンパイル」なしの場合とまったく同じコードがある/application/と、SIMPLIFIEDできるすべての(たとえば)クエリがSIMPLIFIED(オブジェクトQuery_BuilderではなくSELECT blablablablaなど)である/compiled_app/があります。

また、1つのクラスに50個のファイルがあると、多くのうーん...オーバーライドベクトルが追加されますか?:Dこれは不要な100%保証のボトルネックパフォーマンスオーバーヘッドです。多分それは多くはありませんが、それは常にあります。そして、そうする必要はありません。

4

3 に答える 3

1

PHP はインタープリター言語であり、そのようにコンパイルされません。

Zend エンジンが実行してキャッシュするバイトコードに PHP コードを動的にコンパイルする APC があります。これにより、かなりのパフォーマンスが得られますが、欠点と制限があります。

正直なところ、あなたが求めているのは時期尚早の最適化のように聞こえます。コードの実行速度を決定する最大の要因は、アルゴリズムの選択です。100 万件のレコードでコンパイルされたバブル ソートは、同じ数のレコードでコンパイルされていないクイックソートよりも遅くなります。また、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 拡張機能にコンパイルされたフレームワークです。HipHopについて聞いたことがありますか?PHP アプリケーション全体を 1 つのバイナリ ファイルにコンパイルできます。

于 2012-05-14T05:53:37.733 に答える