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:プロファイルベースのチューニングとは具体的にどのようなことを行うのでしょうか

回答の条件
  • 1人5回まで
  • 登録:2008/07/18 00:20:27
  • 終了:2008/07/23 20:58:02

ベストアンサー

id:tobeoscontinue No.3

tobeoscontinue回答回数212ベストアンサー獲得回数522008/07/23 15:17:06

ポイント100pt
質問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をかけて調べるというのはしたことがありませんけど。

id:dedara

大変参考になります。

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

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

2008/07/23 20:57:01

その他の回答(2件)

id:neuromancer_sho No.1

neuromancer_sho回答回数28ベストアンサー獲得回数32008/07/20 17:05:12

ポイント35pt

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

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

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

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

id:dedara

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

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

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

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

2008/07/20 18:07:58
id:neuromancer_sho No.2

neuromancer_sho回答回数28ベストアンサー獲得回数32008/07/20 22:50:47

ポイント35pt

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

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

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

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

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

id:dedara

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

2008/07/20 23:24:21
id:tobeoscontinue No.3

tobeoscontinue回答回数212ベストアンサー獲得回数522008/07/23 15:17:06ここでベストアンサー

ポイント100pt
質問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をかけて調べるというのはしたことがありませんけど。

id:dedara

大変参考になります。

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

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

2008/07/23 20:57:01
  • id:neuromancer_sho
    Flash内でやる処理はaction scriptという言語なんですが、最近それが凄く速くなったという話なので、PHP内でやってた処理をそっちに移した、とかいうのもあるかもしれません。
  • id:dedara
    なるほど。コメントでありがとうござます。
    action scriptが速くなったというのは初めて聞きました。
    最近いろいろといじり始めたところです
  • id:neuromancer_sho
    プロファイルってそっちだったかw
    プロファイラーと書いてあれば分ったのにw

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません