DXライブラリ 総合スレッド その3at GAMEDEVDXライブラリ 総合スレッド その3 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト742:名前は開発中のものです。 09/07/18 08:56:36 UXbVEGUE あ、ちょっとまて、C++のみの話な、他の言語は知らん 743:名前は開発中のものです。 09/07/18 10:41:55 PwgwIsF1 それはヘッダに直接定義書いてるからinline付いてるだけじゃね ソース側で定義でもinlineつけて展開できるなら同じじゃないっけか 後、クラス内での処理はインラインしてくれるのが普通だったきがする メンバ関数内で別のメンバ関数呼び出して処理とか まー、>>736か 744:名前は開発中のものです。 09/07/18 14:09:33 xlxZEQtn インスタンスが確保されてる状態なら、参照を返せばいい。 class Foo { Pos pos_; public: Pos& GetPos() { return pos_; } const Pos& GetPos() const { return pos_; } }; スコープの外側にインスタンスを返すなら、参照渡しじゃ無理なので、コンパイラの NRVOに期待して、例えば以下のように書くことになる。 inline Pos GetPos() { Pos result; /* code */ return result; } NRVO非対応でRVOだけ対応のコンパイラだと、 inline Pos GetPos() { /* code */ return Pos( /* code */ ); } こういうコードじゃないと>>741の言うような最適化は掛からない。 コンパイラーメーカーもC++標準化委員会もNRVOが掛かるように頑張ってるはずだが、 実装状況はコンパイラによってまちまちなんで調べてくれ。多分検索すればすぐ分かる。 VC++なら2005からNRVO行けるっぽい。/O1くらいでもNRVOは掛かる模様。 プロファイラで後から最適化ってのも常道だけど、I/F設計段階の話はそうもいかないし なぁ。 まぁ、俺なら基本的には参照渡し、リターンで解体される自動変数なら値渡しで返して、 後者がボトルネックになるならインライン化でたぶんNRVO発動でおk、って書く。で、 「この設計だと遅そうだしポインタ渡そう」って言われたら、実際どうなるか興味ある んでベンチでも書いたり、ついでに↓みたいなのも一緒に見たりしながら相談する。 http://msdn.microsoft.com/en-us/library/ms364057(VS.80).aspx 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch