Iは、コンパイラのインラインマニュアルインラインより優れていると友人に言われましたが、彼はなぜ私を説明できませんでした。インラインキーワードを手動で実行できる場合(同じコードを何度も繰り返し書くことを除いて)、インラインキーワードを使用する利点は何ですか?コンパイラはインラインよりもインラインで優れていますか?
答えて
Inline
は、プリプロセッサマクロとはかなり異なる、コンパイラによって制御されるコピー/ペーストのように機能します。マクロは強制的にインライン展開され、すべての名前空間とコードを汚染し、容易にデバッグすることができず、コンパイラが非効率的であると判断したとしても実行されます。
inline
という名前を付けると、関数定義をヘッダファイルに入れることができます(リンカが不平等にならずに、複数のコンパイル単位に含めることができます)。あなたにそれをインラインになるという保証を与えるものではありませんinline
何かをマーキング
。これはコンパイラにとっての単なる提案です。仮想関数がある場合や再帰がある場合など、時には不可能です。そして時々、コンパイラはそれを使用しないことを選択します。
インライン関数は、コンパイラがそれを処理する場合、それはあなたがターゲットハードウェア上でより多くの知識を持っているがあれば、これらのパラメータを使用して決めることができます...キャッシュされたメモリ内に収まるように、あなたの関数があまりにも頻繁に呼び出されたときに有用と十分に小さいです
だから、機能があまりにもfrequntly&使用されていない場合は、非常に大規模な手動インラインではありませんコンパイラのインラインに相当しているのですか? –
マニュアルインライン化と自動インライン化は唯一の違いは、コンパイラはあなたのためにそれを行うと、あなたに適した機能のすべてをチェックすることができている、またはあなたは、あなたが何をしているかを知っていれば、自分でそれを行うとインラインにコンパイラに伝えることができ、性能manner..theに同じですいくつかの重要かつ適切な機能。 –
- 1. ログイン領域のインライン幅は、CSSのデフォルトよりも優先されます
- 2. スタティックテンプレートファンクタはコンパイラによってインライン展開できますか?
- 3. 動的(インライン)SQLを使用する関数は、PostgreSQLの動的(インライン)SQLよりも優れたパフォーマンスを発揮しますか?
- 4. コンパイラはこのメソッドをインライン化できますか?
- 5. コンパイラが独自の機能でインライン関数をインライン化できるのであれば、インライン関数をヘッダーに "定義"する必要があります
- 6. ブートストラップ・モーダル・フォーム・インラインは「インライン」ボタンではありません
- 7. コンパイラは人間よりも優れたアセンブリコードを生成しますか?
- 8. コンパイラのインライン呼び出しは何ですか?
- 9. インラインWebページコンパイラはありますか?
- 10. GCCコンパイラ最適化機能インライン化
- 11. "constexpr if"はswitch文よりも優れていますか?
- 12. <table>よりもレイアウトは優れていますか?
- 13. CSSはページレイアウト用のテーブルよりも優れていますか?
- 14. "ReferenceEquals(myObject、null)"は "myObject == null"よりも優れていますか?
- 15. javax.xml.soapはapache cxfよりも優れていますか?
- 16. とLAMP + LAMPPはXAMPPよりも優れていますか?
- 17. XSL-FOより優れているものは何ですか?
- 18. Javaにメソッドをインライン化するコンパイラ指令がありますか?
- 19. インラインJavaScriptとインラインJavaScriptの動作が異なります
- 20. Kotlinインライン関数は、Java匿名クラスよりも安価ですか?
- 21. これはなぜインラインですか?
- 22. テンプレートの特殊化の場合、コンパイラはインラインを無視できますか?
- 23. SSIS;コードを書くよりも優れていますか?
- 24. `make_unique`をプレーンコンストラクタよりも優れていますか?
- 25. java.util.Calendarよりもjava.time.LocalDateの方が優れていますか?
- 26. メソッドがJavaコンパイラによってインライン化されないようにする方法は?
- 27. はインライン
- 28. なぜレキシカルスコープがコンパイラより優先されますか?
- 29. JSXインライン関数(プログラムで設定されていますか?)
- 30. f:uri.imageのインライン表記がtypo3 8.3.0で壊れていますか?
マクロをコンパイラが非効率的であるとみなす例をいくつか挙げることができます(最初の段落で説明したように)。 –
マクロはコンパイルが発生する前に、それは、ソースは、マクロあたりのように変更されており、その後、コンパイル済みの「インライン化」されています。 –
インラインコードが大きくなると、ページングが発生し、最適化がコンパイラーから拒否される可能性があります。 – IndieProgrammer