2009-08-16 26 views
0

私の大きなJavaScriptアプリケーションでは、4秒ごとに35,000回の関数呼び出しが行われています。パフォーマンスはまだ(1.6ghzのAtom上では)大丈夫ですが、ブラウザが機能しなくなる点がありますか?実際のJavaScript関数の呼び出し制限

+1

このアプリは何をしているのですか?それはほぼ10,000の関数呼び出しを必要とします。 – scunliffe

答えて

4

常に有限体系の限界です。

ここではあまりにも多くの変数があるため、実際に何をしているのでしょうか?私は〜10Kの呼び出しを2回行う必要がある場合、これが良いことであるとは考えにくい - この動作のいくつかをリファクタリングすることを考えたか、それを別の[サーバー側]レイヤーにプッシュするこのワークロードをよりうまく処理できるかもしれませんか?

0

ほとんどのブラウザはストールし(シングルスレッドのアプリケーションのように動作します)、実行中のスクリプトを長時間ブロックすると(ブラウザによってはタイムアウトが異なる)、多くのオプションが表示されます。これは問題です。

のいずれかのオプションを使用して、状況を把握することができます(私はあなたがしようとしていることの詳細はわかりません)。例:

 
function do_everything() { 
    foo(); // takes a while 
    bar(); // also takes a while 

これは息をするブラウザの時間を与えるが、普遍的解決策ではありません

 
function do_everything() { 
    foo(); 
    setTimeout(bar, 10); // delay 10ms 
} 

に変換することができました。たとえば、barを完了する前にdo_everything()が戻ります(少なくとも10ms後に発生します)。 javascriptには「スリープ」や「yield」機能がないので、ビジーなループなしで実行中の機能を停止することはできません(ブラウザをロックダウンする)。

関連する問題