コールバック関数を(JavaScriptで)使用すると、同期的に使用するのではなく、パフォーマンス上のペナルティはありますか?例えばパフォーマンスペナルティJavaScriptコールバック関数
:
method(function(result){});
代わりの
var result = method();
編集:そして、コールバック関数によって導入オーバーヘッドがある場合、私はなぜ知っているのが大好きです。
ありがとうございます!
コールバック関数を(JavaScriptで)使用すると、同期的に使用するのではなく、パフォーマンス上のペナルティはありますか?例えばパフォーマンスペナルティJavaScriptコールバック関数
:
method(function(result){});
代わりの
var result = method();
編集:そして、コールバック関数によって導入オーバーヘッドがある場合、私はなぜ知っているのが大好きです。
ありがとうございます!
戻り値と比較して同期計算でコールバック関数を使用するためのごくわずかなオーバーヘッドがあります。
はい、コールバックは同期的に使用できます。チェックアウト:CPS;またはAPIの一貫性の理由からです。
このオーバーヘッドは、関数をcllingしてコールスタックを維持するオーバーヘッドによってもたらされます。また、コールバックとしてクロージャを頻繁に使用するため、オーバーヘッドが発生することがあります。
これは、パフォーマンス上の理由からv * 2
をv << 1
に置き換えた場合に匹敵するマイクロ最適化です。
コード内でそのようなことを最適化する必要がある場合は、アプリケーションの構造に深刻な問題があります。
コールバックを同期して呼び出すときに言及される唯一の問題は、ある時点で最大スタックサイズを超える可能性があることです。
私は単純な計算メカニズムでいくつかのテストを行い、非同期コールバックが同期したコールバックより少し遅いことがわかりました。しかし、使用する理由を理解する必要があります。その答えはパフォーマンスよりも並行性です。彼らはEVENT LOOPを通過するため、速度が遅くなります。 –
ありがとうございました!なぜ私はパフォーマンス上のオーバーヘッドがあるのか不思議であるので、私は私の質問を編集します。 編集:あなたのコメントを更新しました。説明、ありがとう! – gillesC