2013年1月21日月曜日

p2pのライブデータshare動作からtimerEventを極力排除してみました。

p2pの動作ですが、なかなかいい感じにならなかったので、chromeのタスクマネージャーをみていました。

見ていると、CPUがどんどん食われていく感じでした。

前々から、EventListenerでくっつけている動作があやしい気がしていたので、ちょっといじってみました。

timerをつかった一定期間ごとの動作が必要なのは、主に以下
・httpStreamの新しいデータ取得まわり。
・p2pSupplyStreamの生死判定用ping処理
・p2pSourceStreamの生死判定用ping処理
・rtmfpConnectionの接続相手探しの状態管理処理
・dataManagerのstreamのデータ監視処理
この5つがtimerが必要なところでした。

一番はじめにつくったのは、それぞれのクラスの中でtimerオブジェクトをつくって動作させるというものでした。
これが結構重くて、使い物になりませんでした。
プレーヤーの再生もやっていたらだんだんと悪くなっていくという・・・

そこで思ったのがtimerをいっぱいつくらなくても1つのタイマーを使い回してそれぞれのクラスでaddEventListenerをすればいいじゃないかというもの。
この動作に変えてみたところ、まぁまぁまともな動作をするようになったので、いいかなと思っていたんですが、今日タスクマネージャーをみつつ動作を確認していたところ、どうやらp2pの切断等が発生したときに、オブジェクトが残っているみたいで、CPUの利用量がじわじわあがっていく感じでした。

で、先ほどdataManagerのtimerイベントから、他のstreamのデータをキックする形にしてみたところ、いい感じの動作になりました。

うーん、やっぱりeventDispatcher関連は好きになれないねぇ・・・

0 件のコメント:

コメントを投稿