- ベストアンサー
PHPを極端に速くするためには
PHP言語やPerl言語の動作を極端に速くするためにC言語を使ったモジュールを実装することが多いとよく聞きますが、それはどうしてでしょうか。やはり、メモリの操作ができるからでしょうか。 また、PHP言語やPerl言語をサーバサイドとして、大規模なシステムで構築・稼動させるためには、やはりC言語のモジュールが欠かせないでしょうか。 そうすれば、PHP言語やPerl言語を取得されている人は動作を極端に速くするためにモジュールを作成するC言語が必要不可欠でしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
C言語のモジュールを使いまくるならば、最初っから全部Cで作ったほうが早いですよね。 phpなどのインタプリタ言語でも、1回目に動作するときにコンパイル済み状態のものをキャッシュ化して次に動作するときは早くする というものがありますよ。 いろいろありますが、私個人が今検証中なものに eAccelerator というものがあります PHP4でも5でも動く。 スクリプトを解析して中間コードの状態で共有メモリ上にキャッシュします。 2回目以降の実行は構文解析せずに、キャッシュされたコードを読み込むことで高速化しています フレームワークなどで複数のソースファイルが何重にも関連性がある場合などでは、アクセラレータは絶大な威力を発揮します。 ほかにも、memcachedやAPC(Alternative PHP Cache)とかね。 他にもコードレベルで遅くなるような処理のさせ方をしているかどうか やDB関連のチューニング次第では必ずしもCを使う必要がないくらいまで高速化も可能です。 一昔前のように、ハードウェアがめちゃくちゃ高い時代でもないですから、それ相応の速度が出ていれば、あとはハードウェア増設のほうが短期間に速度向上の成果が得られます。 開発そのものの速度を上げて、新たらしいサービスを次々に生み出したほうが、ビジネス的にはヒットする可能性も上がりますからね。 もちろん、Cでモジュール類を組むことを否定しているわけではありません。開発者のスキルの最高の人がCを熟知している人で最低ラインの方がCを触った経験があること、最高スキルの人がスタッフ全員に指導して開発者達のスキルの均一化ができればそのような方法もありかと思います。 というような速度のお話とは全く別に、C系はやっておいて損はありません。 むしろC/C++をやることで他の言語の様々な基盤を作ってくれます。 いや、これからの開発者としてCの知識は必須かもしれません。 例え実際の業務でC系で開発することが無くとも、他の言語を触る上でかなり役立つ知識の宝庫だと思ってください PHPやPerlでは何の気なしにコーディングしていたものが、実際にはどう動いているのかを見ることもできます。 その結果、とある標準関数で重大な欠陥を発見したり。 似たようなソースの場合どちらが速いのか などを判断したりすることも可能。 他にも、例えば転職するとか就職するなどの場合。独学でもなんでもいいのでCの経験があってさらにJavaなりPHPなりPerlなりを習得していると、あら不思議、スキル以外の重大な欠点が無ければ即採用 ってな事も多いですよ。
その他の回答 (1)
- Tasuke22
- ベストアンサー率33% (1799/5383)
> やはり、メモリの操作ができるからでしょうか。 コンパイラとインタプリタの違いです。 インタプリタは言ってみれば、実行するたびにコン パイルしているようなものです。 コンパイラは一回コンパイルして実行時にはコンパ イルしません。 > やはりC言語のモジュールが欠かせないでしょうか。 システムが要求する速度が、PCの高速化で間に合わな ければ必要でしょう。 > 動作を極端に速くするためにモジュールを作成するC言語が必要不可欠でしょうか。 速くするためには必要でしょう。 理想はハードで処理速度が稼げて、コンパイラ言語化 しない方が良いと思います。しかし、どうしても速度 が必要なシステムでは背に腹は変えられないでしょう。
お礼
ご回答ありがとうございました。 >コンパイラとインタプリタの違いです。 なるほどです。コンパイラとインタプリタの仕組みの違いがよく分かりました。最近はPCの性能が良くなったので、インタプリタでも十分動作処理が速くなったため、インタプリタ中心となっているかも知れません。
お礼
ご回答ありがとうございました。 C言語は他の言語の基盤を作るので、学んでおいても損はないでしょう。 >独学でもなんでもいいのでCの経験があってさらにJavaなりPHPなりPerlなりを習得していると、あら不思議、スキル以外の重大な欠点が無ければ即採用。 なるほどです。