質問: 同機能の、「組み込み関数」と「ユーザ関数」、両者の性能差について。 いつもお世話になっております。 php5.2.5 apache1.3.37 sqlite3.3.7 phpには、組み込み関数が予め、膨大な数、用意されているという話なので、 実際には、 有用であるけども出会うことのない組み込み関数 というものもあるように思います。 この場合、 そういった組み込み関数と同機能のユーザ関数 を車輪の再開発してしまうことが考えられます。 そこで、私が知りたいことは、 組み込み関数で提供されている機能を、 ユーザ関数で実現する際、 性能を損なわずに(つまり、処理速度面でも同等に)、 ほぼ等価な関数をユーザ関数で作ることはできるのか、 ということです。 よく使用されるお馴染みの関数の多くは、 それ自体、基本的な機能でのみ構成されていると思われるので、 それをユーザ関数で実現するとなると、 私にも、「それは難しそうだな...」と思えますが、 そうではなく、 かなりマニアックな関数、 つまり、 基本的な組み込み関数を複数組み合わせて作られているような、 そんな組み込み関数も、中にはあるわけで、 それらの中には、よく知られておらず、 車輪の再開発されてしまうものも多いと思います。 (再開発自体を回避する策があるのであれば、それも知りたいと思います) phpの中の構造について詳しくないので、 既に変なことを言っているかもしれませんし、 以下でも、さらに変なことを言うかもしれませんが、 組み込み関数とは、c言語など、phpではない言語で作られていたりするのでしょうか? (処理速度をあげる、等の理由から) そうであるならば、 ユーザがphpを操って作るユーザ関数は、出来る限り作らず、 既存の「組み込み関数」を利用したい、と私は考えます。 よって、「知りたいこと」を要約すると、 ・車輪の再開発を防ぐ方法 ・車輪の再開発されたユーザ関数の、組み込み関数との性能差 ・組み込み関数の成り立ち(c言語由来?) こうなります。 組み込み関数を検索する際の、自分の検索能力を鍛えるべきなのか、 車輪の再開発することになることを想定し、その再開発能力を鍛えるべきなのか、 どなたかに、何らかのアドバイスをして頂けると嬉しく思います。 (そもそも、組み込み関数に適当な関数があるかどうかを、皆さんはどのように検索されているのでしょうね...。 私なんかは、リファレンス本をメインに探していたりしますが。) 以上、どうぞよろしくお願い致します。
回答: phpのソースはcでかかれています。(元になったphp/fiはperlで書かれていたそうですが) ソースはすべて公開されていてlinuxではソースからmakeするのも普通に行われます。 組み込み関数というかモジュールで追加される関数もcで書かれているのでphpで再開発するよりかなり高速でしょう。 peclというプロジェクトでphpに独自の関数をcで追加できます。