問題タブ [static-dispatch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
110 参照

clojure - Clojure でマクロを使用して戻り値の型を静的にディスパッチできますか?

これで、厳密に言えば、 Clojure プロトコルでのディスパッチが動的であることがわかりました。

マクロを使用したコンパイル時のディスパッチの素晴らしい例を次に示します。

ここで筆者は、Clojure では戻り型でディスパッチすることは決してできないと主張しています。私には、十分に強力なマクロがあれば、何でもできるように思えます。

私の質問は、マクロを使用して、Clojure で戻り値の型を静的にディスパッチできますか?

0 投票する
3 に答える
1547 参照

java - Javaでのバインディングとディスパッチの違いは何ですか?

関連する名前が多すぎます: Early Binding と Late Binding、Static と Dynamic Dispatch、Runtime と Compile-time Polymorphism など、違いがわかりません。

明確な説明を見つけましたが、それは正しいですか? JustinCを言い換えます。

バインディング:変数 (オブジェクト?) の型を決定しています。コンパイル時に行われる場合は、早期バインディングです。実行時に行われる場合は、遅延バインディングです。

ディスパッチ:メソッド呼び出しに一致するメソッドを決定しています。静的ディスパッチはコンパイル時にメソッドを計算しますが、動的ディスパッチは実行時にそれを行います。

Binding は、プリミティブ変数と参照変数をそれぞれプリミティブ値とオブジェクトに一致させていますか?

編集:これについてもっと読むことができるように、明確な参考資料を教えてください。

0 投票する
1 に答える
252 参照

swift - 動的ディスパッチの使用を増やすと、コンパイル時間が短縮されますか?

Swift では、コンパイル時間が非常に遅くなり、プロジェクトのコード量が増加します。そこで、その時間を短縮する方法を探していました。1 つのアプローチは、次のような言語キーワードを使用するfinalstatic、この場合は静的および動的ディスパッチを使用してコンパイラがコードを処理する方法を変更することです。

しかし、私が読んだ限りでは、実行時のオーバーヘッドを回避して動的ディスパッチを減らす方が良いです

したがって、私の最初の疑問は、より動的なディスパッチを使用して実行時にできることをすべて実行すると、実行時のオーバーヘッドを犠牲にしてコンパイル時間を短縮できるかどうかです。

私の 2 番目の疑問は、実行時のオーバーヘッドが非常に悪いということですか? オーバーヘッドを減らすためにコンパイル時間を犠牲にすることができると思いますか?