問題タブ [inlining]
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.
c# - C#で関数のインライン化を強制する方法はありますか?
私の知る限り、特定の関数をインライン化するようにc#コンパイラにヒントを与える方法はありません。これは、設計上、そのようなものだと思います。
また、プログラマーにインライン化するものとそうでないものを指定させないことは、一般的には良い考えだと思います。これは、JITコンパイラーよりも賢いと思うことを意味するためです(実際の人には敬意を表します)。ターゲットマシンでどのようにそれを達成するかに関係なく、コードの重要な部分がどんな犠牲を払っても非常に高速である必要があることを指定したい場合はどうでしょうか。今のところ、そのようなことはできません。c#言語とJITの両方がこの機能をサポートするのではないかと思います。
私の場合、ターゲットマシンが何であるかを知っており、関数のインライン化がパフォーマンスの向上に役立つことを知っています。これにより、関数のインライン化を強制する唯一の方法は、JITがどのような状況でそれを実行するかを知ることだと思いますが、それも良い考えではないと思います。
主題に関するどんな光でも大いに感謝されるでしょう。
ありがとう。
java - すべてのコンパイル時定数はインライン化されていますか?
次のようなクラスがあるとしましょう。
私のアプリケーションの他のクラスの多くは、これらのオプションを使用しています。ここで、オプションの 1 つだけを変更し、コンパイルされたクラスだけをデプロイしたいと考えています。しかし、これらのフィールドが消費者クラスでインライン化されている場合、これは不可能になりますよね?
コンパイル時定数のインライン化を無効にするオプションはありますか?
c# - 関数のインライン化
インライン化とは
それは何のために使用されますか?
C# で何かをインライン化できますか?
coding-style - ゲームの「移動機能」に「位置確認」機能を入れた方が効率的か、それとも外部機能として外に出した方が効率的か?
私は C++ でゲームを作成しています (そういえば、私が使用するコードは重要ですか?)、これはボード ゲームとして大まかに説明できますが、これら 2 つの「キャラクターが範囲外かどうかを確認する」のはどちらでしょうか?関数はより効率的です。
1:
2
基本的に、最初のものはすべてのエンティティを移動し、すべてのエンティティの位置をチェックして、それに応じてそれらをリセットします。2 つ目は、ループの最後まで待つのではなく、プレイヤーが移動しても範囲外に動かないようにします。
これら 2 つ (システム?) のどちらが他方よりも効率的または高速であるか、または両方が等しい場合、どちらがより優れたコーディング スタイルになるかを知りたいです。
java - Java でのインライン化
C++ では、メソッドを「インライン」で宣言でき、コンパイラはそれをインライン化する可能性があります。私が理解している限り、Java にはそのようなキーワードはありません。
JVMがそうすることを決定した場合、インライン化は行われますか? この決定に何らかの形で影響を与えることはできますか?
interface - 仮想対インターフェースpoco、何が速いですか?
私はこのように設計されたアプリケーションを維持しています:
データカプセルは、多くのゲッターとセッター(プロパティ)を備えた単純なクラスです。DIフレームワークを使用し、一貫してIoCコンテナーを使用してデータカプセルのインスタンスを提供します(幸運なことに!)。
問題は、「変更通知」メカニズムを導入する必要があることです。simplePoco
私にはいくつかの選択肢があります:
を導入し
IPoco
、厄介なコードを変更してsimplePoco
、速度を上げるために、またはnotifyingPoco
変更通知(選択的に遅い)が必要な場合に使用できるようにしますか?また ...すべてを仮想化し、自分のカスタム
notifyingPoco
クラスをsimplePoco
(さらに遅く)上にロールしますか?わからないデザインパターン?
これはクライアント/サーバーシステムですが、サーバー部分を変更しているだけなので、可能であれば、 厄介なコードやクライアントコード(シリアライザーとリフレクション、恐ろしい忍者のものがあります...)には触れたくないです。誤って何かを壊してしまいます。
インターフェイスを使用すると、JITがgetter / setterへの呼び出しをインライン化できなくなりますか?
simplePocoインスタンスがひどく悪用されていることを考えると、最善の方法は何ですか?
c++ - 「インライン化に失敗しました」というg++の警告について心配する必要がありますか?
私がオフィスで取り組んでいるプロジェクトで、リリースビルド(-Osを使用)をコンパイルすると、インライン化に失敗したという警告がg++から何百も表示されます。これらの警告のほとんどはブーストから発生しているようですが、一部は独自のライブラリヘッダー(リンク先のバイナリ.dylibs)から発生しています。これらの警告は一般的に安全に無視できますか、それとも私が心配すべきことですか?
注:MacOSXではg++4.0を使用しています
debugging - Lauterbachを使用したデバッグ(Trace32)
トレースを使用しているときに、ブレークポイントを設定するためにそれらを検索しようとしたときに、いくつかの関数がソースにリストされていないことがわかりました。これらの関数は、ソースをアセンブリ形式で表示した場合にのみ表示されるようです。
先輩に話を聞いたところ、関数が1回だけ呼び出されると、Traceによって最適化され、インラインとして表示されるため、アセンブリで確認できるとのことでした。
私の質問は次のとおりです。
- この最適化はローターバッハを通じてどのように行われますか?
- これは有利ですか?
c# - ラムダはインライン化されますか?
単純なラムダ式はインライン化されますか?
私は (F# やその他の関数型開発のおかげで) 単一の関数内に存在する繰り返しコードをラムダにカプセル化し、代わりにそれを呼び出す傾向があります。その結果、実行時のオーバーヘッドが発生しているかどうかに興味があります。
対
ランニングコストが高いのはどっち?
java - インライン化とは
私はこの議論に言及しています。C や C++ でコードを書いたことはありません。CSのバックグラウンドはありません。しかし、私は Java 開発者として 5 年間働いており、今は CS についてもっと学び、キャッチアップすることにしました。