人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのチューニングについて
http://info.dwango.co.jp/rd/files/itpro_challenge_20070907/itprochallenge_nicovideo_koizuka.swf
上記URLから読める「ニコニコ動画の創り方」ですが、わからない点がありました。
14ページの「高速化のためにC言語でPHP Extensionの開発」
15ページの「プロファイルベースのチューニングを実施」
とある部分です。

質問1:ここでいう「PHP Extensionの開発」とは、いったいどのような「PHP Extension」を作るのでしょうか。(チューニングやExtension開発どっちも触れたことのない分野なのでぜんぜん想像がつきません)

質問2:プロファイルベースのチューニングとは具体的にどのようなことを行うのでしょうか

●質問者: dedara
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:C言語 PHP URL とある チューニング
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● neuromancer_sho
●35ポイント

Extensionという言葉はPHP用語でもFlash用語でもないです。「別付け機能」みたいな意味です。ですので、ここでの意味は「PHPだけじゃ遅すぎるから、重い部分だけC言語で取り付けよう」ということだと思います。内容から想像すると多分、雛形のFlashにパーツを加えていくところが重いんじゃないでしょうか。

で、それをやってもまだ高速化出来なかったので、システム全体のチューニングをしたみたいです。「チューニング」というのは調整という意味です。これもPHP用語とかFlash用語じゃありません。

「プロファイルベースの」というのは「各機能ごとに」みたいな意味だと思います。

いずれにせよ、これだけでは抽象的すぎて、ドワンゴの人に直接聞かないと何をしたのか分かりません。

◎質問者からの返答

回答ありがとうございます。PHPよりもC言語の方が速い処理のプログラムが作れるということですね。C言語で作った処理速度の速いプログラムをPHPに拡張モジュールとしてインストールする感じでしょうか。

「プロファイルベース」というのがまだよくわからないのですが一般的な用語ではないんですね。プロファイルというと設定ファイルのようなものを思い浮かべていました。各機能ごとに「PHPプログラム部分」をチューニングするとして「PHPプログラムのチューニング」の方法というのは一般的にどのようなものがあるのか、というのを知りたかったのです。

>>「抽象的すぎて、ドワンゴの人に直接聞かないと何をしたのか分かりません。」

一般的に広く行われていることかと思い、質問してみました。


2 ● neuromancer_sho
●35ポイント

>C言語で作った処理速度の速いプログラムをPHPに拡張モジュールとしてインストールする

拡張モジュール以外にも方法があるかもしれませんが、形はどうあれ、そういう事です。

チューニングと言った場合にどのような事があるかと言えば、他の言語と同じです。

この話の場合、速度のチューニングということなので、SQLをもっと速度のでる文法にする(DBによる)とか、クライアント側で出来る事はjavascriptにする(結果を早く返したいから後は向こうでやってもらう)とか、その他無数にあります。

Flashを使うんだったら、PHPでやる処理とFlash内でやる処理を、どれをどっちにした方が速いか?などを考える作業になるかもしれません。

◎質問者からの返答

なんとなくイメージがつかめました。もっとまったくわからない分野のことかと思っていました。けっこう経験のある範囲の中でも出来ることが多そうだということがわかりました。知らない分野についても深く調べていこうと思います。ありがとうございました


3 ● tobeoscontinue
●100ポイント ベストアンサー
質問1:ここでいう「PHP Extensionの開発」とは、いったいどのような「PHP Extension」を作るのでしょうか。
   (チューニングやExtension開発どっちも触れたことのない分野なのでぜんぜん想像がつきません)

PHP Extensionについては拡張モジュールの構造が参考になると思います。

>いったいどのような「PHP Extension」を作るのでしょうか。

その為にはどんな機能が必要かを知る必要があります。大きくは動画と流れるコメントから成っています。動画についてはP24に『動画はうちのサーバーを通さず、アクセス方法だけプレイヤーに伝える。』とありますので流れるコメントの部分についてのみ処理できる機能が必要だということです。既にP5に『1.外部の動画にコメントを付けるサービス』とありましたorz。

より具体的にはswfファイルを動的にカスタマイズして出力するサービスとのことのようです。

phpにはswfファイルを出力できるmingというものがあります。mingや独自のものも検討したが十分な速度を達成できなかったので『C言語でのPHP Extensionの開発』となったというのは考えられると思います。

流れるコメントのサンプルとしてrubyからmingを使用したものがありました。http://kumamushi.org/~k/ming/katakana.rb

感じとしてはテキストをMovieに追加したものをmove_toで少し動かしたら、次のフレームにして、また少しmove_toするということを繰り返しています。これらを最後にswfファイルとして出力します。

ニコニコについては全てのコメントについて同様の処理をする必要があります。更に開始位置を決めたり、重ならないようにするなどの処理をしているようです。詳しくはhttp://info.dwango.co.jp/rd/2007/11/niconico_and_flash.swfが参考になるかと。

ある時点のコメントでswfファイルを作るとの新たな書き込みがあったら、そのコメントを取り込むには再度swfファイルを作り直さなければいけません。その辺がパフォーマンスが必要な理由かと思います。

同じようにPHP Extensionの開発をしておられる方がいました。http://www.nicovideo.jp/watch/sm4033517

質問2:プロファイルベースのチューニングとは具体的にどのようなことを行うのでしょうか 

開発がC言語という記述があったので、すぐ思い付いたのがgccのprofileです。

http://q.hatena.ne.jp/1133766620

各関数の実行回数や実行時間などがわかるのでそれを参考にチューニングしていくということだと思います。

ちょっと動かしただけでも大量のものが出てくるのでprofileをかけて調べるというのはしたことがありませんけど。

◎質問者からの返答

大変参考になります。

プロファイルの意味がわかりました。

それから動画にコメントをつける仕組みまで。大変勉強になります

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ