vc2008デバッグモードでインライン展開したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
8127

vc2008デバッグモードでインライン展開したい

#1

投稿記事 by 8127 » 9年前

個人でDXライブラリを使って中規模(計30000行くらい)のゲーム開発をしているものです。

プログラムにおいて1フレームで次のような処理が20000回ほど呼ばれます。

コード:

if(1==sprite->alive){
このコードを次のようにリファクタリングしました。
・aliveをprivateにする
・inline指定付きのgetterをクラスSpriteに実装する

コード:

inline signed char getAlive(){
	return alive;
}
if(1==sprite->getAlive()){
そうしたところ、debugモードにおいて処理が非常に重くなり手が付けられなくなりました。(releaseでは問題なく動作します)
逆アセンブルして原因を調べたところ、getterがinline展開されていないことがネックでした。
このままではデバッグができないので、何とかdebugモードでinline展開できる方法(vc2008の設定やコンパイルオプション等)
をご教授いただけないでしょうか。
環境はwindows10,VisualStudio2008 ExpressEditionです。
よろしくお願いします。

8127

追記

#2

投稿記事 by 8127 » 9年前

追記します。
コンパイルオプションは
/Od /Oi /I "./DxLib/" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Gm /EHsc /RTC1 /MTd /fp:fast /Yu"stdafx.h" /Fp"Debug\naraku_m_h.pch" /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W4 /nologo /c /ZI /TP /FI "StdAfx.h" /FI "always_include.h" /errorReport:prompt
です。
インライン関数の展開/Ob1は試しましたがdebugモードでは使用できないようでした。

dic
記事: 658
登録日時: 15年前
住所: 宮崎県
連絡を取る:

Re: vc2008デバッグモードでインライン展開したい

#3

投稿記事 by dic » 9年前

はじめまして、問題のインライン展開ですが、cppソースに書かれていらっしゃるのでしょうか?
もし、そうならば、ヘッダーファイルに書いてみてはどうでしょうか?

第8章 インライン関数・再び
http://www7b.biglobe.ne.jp/~robe/cpphtm ... 02008.html

上のURL先が参考になれば幸いです。
すでに検討済みであれば、申し訳ありません。

8127

Re: vc2008デバッグモードでインライン展開したい

#4

投稿記事 by 8127 » 9年前

こんばんは。
inline関数の定義はヘッダ中のクラス定義の中に書いています。
下の2通りを試しましたが、どちらもinline展開されませんでした。

コード:

class Sprite{
    inline signed char getAlive(){
        return alive;	
    }
};

コード:

class Sprite{
    signed char getAlive();
};
inline signed char Sprite::getAlive(){
        return alive;	
}
MSDNに載っている__forceinlineキーワードも試しましたが無効でした。

閉鎖

“C言語何でも質問掲示板” へ戻る