• ベストアンサー

同機能の、「組み込み関数」と「ユーザ関数」、両者の性能差について。

php504の回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.5

PHPのソースはCでかかれています。(元になったPHP/FIはPerlで書かれていたそうですが) ソースはすべて公開されていてLinuxではソースからmakeするのも普通に行われます。 組み込み関数というかモジュールで追加される関数もCで書かれているのでPHPで再開発するよりかなり高速でしょう。 PECLというプロジェクトでPHPに独自の関数をCで追加できます。

march4
質問者

お礼

>ソースはすべて公開されていてLinuxではソースからmakeするのも普通に行われます。 Cの知識があれば、PHPのソースから改変することも可能なわけですね。 Cについての知識は、私には無いので、この辺りの話は全く検討もつきませんが、 ただ単純に、「そんなことができたら、楽しいだろうな」とは思います。 >PHPで再開発するよりかなり高速でしょう。 やはり、そうですよね。 >PECLというプロジェクトでPHPに独自の関数をCで追加 PECL。 この言葉は、しばしば目にしますが、 PEARにすら手を出せていない私には、 PECLとの本格的な出会いは、まだまだ遠い先のことのように 思えております。笑 車輪の再開発を回避するために検索を心掛けようと思っておりますが、 その検索範囲は、 検索に許されている時間と自身の検索能力で決まる値なのだと思います。 検索していくことで、自分の中には無い新鮮な考え方との出会いもあるでしょうし、 また、独りよがりな設計になりがちなのを抑えてくれるといったメリットもあるでしょうから、 ここは謙虚に、検索能力を上げる工夫をしていけたらと思います。 以上、参考になるアドバイスをどうもありがとうございました。

関連するQ&A

  • 関数の組み込み。

    PHPでの関数の組み込みの質問です。 自作の関数を集めたPHPファイル"common_function.php"を製作し、 それぞれの処理の頭でこの関数ファイルをinclude_onceを使って 読み込んでいるという形式で処理を行っています。 include_once("../common/common_function.php"); この処理を行わずにこの関数ファイルををデフォルトで読み込む ようにPHPの設定に組みこむ事はできないのでしょうか? よい方法があれば宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHP 設定ファイルとユーザ定義関数

    ある機能を満たすためのライブラリ(lib.php)を作成しました。 このlib.phpはユーザ定義関数の寄せ集めです。 それぞれのユーザ定義関数では、設定ファイル(config.php)に記述されている共通変数を利用します。 このconfig.phpなのですが、ユーザ定義関数ごとにincludeする以外の方法はあるでしょうか? lib.php function one() { $hensu1... $hensu2... ...処理; } function two() { $hensu1... ...処理; } .... config.php $hensu1 = 1; $hensu2 = 2; ... という構成です。 function one,function twoでconfig.phpの変数を利用したいのですが、lib.phpの先頭でinclude "config.php"をしてもfunctionの中では変数のスコープが有効にはならず、 lib.php function one() { include "config.php"; ...処理; } function two() { include "config.php"; ...処理; } としています。 PHP5を使用しています。 function one() { global $hensu1... } としたらよいのでしょうか? どなたかアドバイスいただけますと幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • VBAユーザー関数を外部から制御

    ExcelのVBAで、標準モジュールにワークシートで使うユーザー関数を記述しています。 ユーザー関数は、使い勝手を組み込みのワークシート関数と同様にするため、 Application.Volatile (True) で自動再計算するようにしており、数百カ所以上のセルに使用しています。 しかし、他のVBAモジュールでユーザー関数の戻り値が変わるような操作をすると、その都度 数百か所以上が再計算されるため、非常に時間がかかります。 ユーザー関数のApplication.Volatile (False) にすると瞬間で終了する処理が、数分かかる場合も あります。 他のVBAモジュールから、一時的にユーザー関数の処理内容を変更するようなことは可能でしょうか。

  • データベースのユーザ定義関数について

    PHP4.3.1、MySQL4.1.13を使用して、Webアプリケーションを製作しております。 幾つかの参考書籍やこれら情報に関するWebなどを見ていますと、後々データベースが変更になった時を考え、それぞれのデータベース用の関数を利用せずユーザ定義関数で処理した方が良いと書かれていました。 ただ、データーベースの処理と言っても様々な処理があると思いますし、それら全てをユーザ定義関数で置き換えなくてはならないのかな?と疑問(迷い)を感じております。 皆様は、どの様にされていますでしょうか?または、どの様に考えたら良いでしょうか?プログラミングの基本的な事かもしれませんが、どなたかご教授いただけないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • ユーザ関数の呼び出し方法 その2

    ユーザ関数の呼び出し方法 http://oshiete1.goo.ne.jp/qa3567728.html で、質問をさせて頂いた者です。 お陰様で、だいぶ出来てきました。 frameで左右に分かれています。 「左がメニュー画面」 「右がデータを表示する画面」 メニュー用のPHPに //処理部分 <?php if($_GET["mode"] == 1){ //処理1のスクリプト include("./ee.php"); ads(); } と、しました。 そうすると 左のメニュー画面にデータが表示されてしまいます。 右のデータを表示する画面に更新したい場合 どのように書けば宜しいですか? --------------- <frame name="hidari" src="aa.php"> <frame name="migi" src="ee.php">

    • ベストアンサー
    • PHP
  • PHPの機能制限

    お世話になります 環境はlinux centos6 + php を使っています。 ユーザーにブラウザ上で任意のサーバサイド言語を記述でき、実行できる環境を作ろうと考えています。 ユーザーには悪意のあるユーザーも含まれます。 使用したいものは変数,配列,連想配列、関数はfor,if,foreach,replace系,match系,split,explode 以上のみで他の関数は実行できないようにしたいです php又は他の言語に機能制限みたいなものが存在すれば実現できると思うのですが そのようなものはあるのでしょうか? smarty等のテンプレートエンジンは元々そういう用途のものではないので 思わぬ事故が起きそうでなるべく使用したくありません。 これを実現するには replaceやmatchを駆使してphpの上で動く独自のミニ言語を作る他ないのでしょうか なにか手がかりをご存知の方お教え頂けると嬉しいです。

    • ベストアンサー
    • PHP
  • CPUの違いとクロック数の違いでの性能の差

    現在、CPUの買い替えを検討しているのですが Pentium D3.0GHzとCore 2 Duo E4300 1.8Ghzだと 単純に性能だけを見ると処理能力ではどちらが上なのでしょうか? また、処理速度に不満がある場合CPUを変えるのとメモリを増設 するのはどちらのほうが良いのでしょうか?

  • ユーザ定義関数の引数にクラスのインスタンスを渡すことは可能?

    いつもお世話になっております。 (PHP5.2.5) 質問: ユーザ定義関数の引数に、 「クラスのインスタンス」を渡すことは可能ですか? 例: <?php  //クラスをインスタンス化する。(例:PDOクラス)  $conn = new PDO($dsn,$user,$pass);  //ユーザ定義関数に上記のクラスのインスタンスを与えている  user_func($conn);  //ユーザ定義関数の定義部  function user_func($conn){   $sql = '~SQL文~';   $stmt = $conn->prepare($sql);   :   :処理   :  } ?> 関数に渡すことのできる引数の型について、 なかなか見つけられず、初歩的な質問をしてしまっているかもしれませんが、 どうぞ宜しくお願い致します。        

    • ベストアンサー
    • PHP
  • ユーザ関数function の扱いについて。

    おそらくは、初歩的な質問なのだろうとは思いますが、どうぞよろしくお願い致します。 早速ですが、質問に入ります。(PHP4または5での話です。) //関数を定義 function test($a){   $b = $a*100;   print $b;   return $b; } //テキトーに値を用意して変数に格納 $c = 5; //------------------------ 作った関数を使ってみる //------------------------ //(その1)関数内の処理結果をprintしてくれるものと思って使っている。 test($c); //------------------------- //(その2)関数内の処理結果の戻り値を変数$dで受け、それをprint。 //「その1」との違いを調べたくて、こんなことをしている。 $d = test($c); print $d; //------------------------------- さて、何が言いたいかと言いますと(笑)、 まず、上記(その2)に着目して頂いて、 関数定義の中でprint()を使用している関数に対し、 その定義の中にreturnがあるからと、 $dでその戻り値を受けているわけですが、 この場合、print()で出力した値は、一体、どこへ行ってしまったのでしょうか。 このような質問のしかたをしていますが、 分からないのは、この辺りの処理の流れ全体なんです。 つまり、print()したものがどうなったのかだけが知りたいわけではなく、 ユーザ関数内のprintとreturnの関係とか、そのあたりです。(笑) return; が来たら関数内の処理を抜ける、 ということは分かっています。 以上、1つずつ順を追って説明して頂けると助かります。 //-------------------補足------------ //新たに関数を定義 function test2($a){   $b = $a*100;   print $b; } $e = 5; $f = test2($e); //returnのない関数から戻り値を受け取ろうとしてもダメ //ということは、こんな私にでも分かっています。 //---------------------------- 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  • ユーザー定義関数とクラスの違いとは?

    間違えて違うカテゴリーに質問してしまったので、 そちらを削除して、質問させていただきます(レスも幸いなかったため)。 PHPを勉強して1ヶ月の初心者です。 ホームページを作ろうとして、本に書いてあったプログラムを元に、 付け足したり、削ったりしていました。 そして、プログラムが長くなってきたので、外部ファイルに処理を分割してみました。 どの本にも、「クラス」「オブジェクト指向」という言葉が強調されていたので、 とりあえずクラスにしてみました。 しかし、クラスの中で処理をした変数を取り出すのが手間に感じます (クラス内では「$this->変数名」、クラス外では「$クラス名->変数名」と書く手間が・・・)。 本の中には、クラスを使わずに、 ユーザー定義関数のみのfunctionをまとめた外部ファイルを 作成している例が多い気がします。 そこで質問なのですが、 処理を分割して外部ファイルにするとき、 「メソッドをまとめたクラス」にした方がいいのでしょうか? それとも、「ユーザー定義関数をまとめたもの」にした方がいいのでしょうか? また、「こうゆう場合は、クラスにした方がいい」「ユーザー定義関数にした方がいい」などの 条件がありましたら、教えていただきたいです。 本やネットを調べても、使い分けについて書かれているページがなく、 今後の作成のためにも、ぜひ知っておきたいです。 すべてクラスにした方が今後よいようでしたら、全部クラスのままで作れるよう、 慣れていきたいとも思ってもいます。 よろしくお願いします。

    • ベストアンサー
    • PHP