速度を向上させるためだけに、C から PHP 拡張機能を作成することを考えています。strpos()
などpreg_match()
は私のプロジェクトには遅すぎます。
しかし、それは「もともと」Cまたはその他の原始言語で書かれたに違いないstrpos()
ことに気づきました。preg_match()
それで、ここで私の質問: 計算速度を向上させるためだけに、C で何らかの拡張機能を作成することは意味がありますか?
速度を向上させるためだけに、C から PHP 拡張機能を作成することを考えています。strpos()
などpreg_match()
は私のプロジェクトには遅すぎます。
しかし、それは「もともと」Cまたはその他の原始言語で書かれたに違いないstrpos()
ことに気づきました。preg_match()
それで、ここで私の質問: 計算速度を向上させるためだけに、C で何らかの拡張機能を作成することは意味がありますか?
「自己完結型」のボトルネックを特定できると便利な場合があります。PHPはまだスクリプト言語です。多くのルックアップ操作、Cで最適化できるいくつかのメモリ操作、特定の場合により効率的に保存/使用できる基盤となるライブラリの1つからのハンドル/値/メモリブロックなどがあります。の上。
ただし、触れているコードブロックが努力する価値があることを確認してください。つまり、最初にボトルネックを特定します。phpプロファイラー(xdebugなど)を実行してから、Cプロファイラーを実行して、phpランタイムのどこで時間が費やされているかを確認します。また、拡張機能を作成する場合は、それを最新の状態に保ち、実行し、機能させることがあなたの仕事であることを忘れないでください(バグ追跡/修正、品質保証などを含む)。
PHP で何らかの拡張機能を作成することに興味があるというのは、本当に素晴らしいことです。
以下のリンクを参照して、Facebook がスピードを上げるために HipHop プロジェクトをどのように開始したかを理解してください。彼らはこれを、PHP の代わりに C のような母国語でコードを書くことによって達成しました。
http://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/
しかし、すでに PHP で書かれた ext を書き直す代わりに、新しいものを書いてみてください。PHP で新しい拡張機能を書くことに関する多くの記事を見つけることができます。
既存の拡張機能は既に最適化されているため、特定の作業を行いたい場合、およびそれをサポートする優れたアルゴリズムがある場合は、独自の拡張機能を作成してください。
証明されていませんが、正規表現または文字列スキャンの独自の低レベルの実装を行うだけでは、速度を大幅に向上させることはできないと思います... phpはcで記述されており、すでに高度に最適化されています...
コードをチェックしてフローを改善してください...
無理ならfacebookの「HipHop」見てみようかな…
PHPはstrpos()
既に.preg_match()
C
むしろ、PHPコードを最適化して、それらの関数を 悪用するのではなく使用できるようにすることは意味があります
それでも、さらに別の実装を提供することで本当に速度を上げたい場合は、十分に高速である場合にのみ役立つ可能性があります。そうでなければ、時間と労力の無駄です。
PHP ソース コードを見て、これらの関数の現在の実装を確認し、本当に改善できるかどうかを確認できます。