極端に重い処理をJavaScriptに投げると・・

RBK Drachnyd(しお)

2010年09月01日 15:37


llSetPrimMediaParams()(ビューワー2専用)のパラメーターを見ていて今更気づきました。(笑
URLの代わりに1KBまで限定で、document.write()と同じことが出来るんですね。。^^;
外部URLのJavaScriptの実行は普通にしているようで、各ユーザーのパソコン上での実行のようです。ということは、スクリプトのソースが流出することを覚悟するなら、計算が極端に速くできるという事だと思いましたので、実際にやってみました。

元状態:LSLで全てしている場合の速度(黒棒が生えたら終了)




改造後:多倍長計算をプリムメディア(ブラウザ)に投げた場合




スクリプトはlslのものを関数名や制御構造をJavaScriptのそれに変えた(jumpが無いとか)だけで、中身は同じですが、思ったとおり劇的な速度向上が得られます。

なお、JavaScriptファイルを外部サーバーにおくと、ユーザーブラウザがサーバーにアクセスしたときに少なくとも元データーとIPは(私に)抜かれてしまいますし、私が外部サーバーを閉じてしまう(破産したとか。。^^;)と全ユーザーで一斉に動かなくなってしまいますので、外部サーバーへのアクセスを排除する為にhttp-inでプリムをWEBサーバーにして、JavaScriptソースをstringとして持っていてGET要求があるとそれを返すようにしてあります。(クラウドをもてはやす評論家って、一体何を考えているんでしょうね。。常々疑問です。。)

計算結果はXMLHttpRequestでPOSTで送り返すようにしましたが、2Kを超えるbodyは切られてしまうため、結果のサイズをブラウザ側で調べて、分割して分けて送り返すようにしました。この動画の場合、結果転送の待ち時間で3秒程度かかっていて、これにllSetPrimMediaParams()の1秒のスクリプト停止があります。




んー。最大の難点は方法ではなくて、ビューワー2を使っている人がどのくらいいるか、ですね。。
作成物/製品