- PR -

コードの最適化オプションについて

1
投稿者投稿内容
コウイチ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 48
投稿日時: 2006-02-09 10:27
VS.Net2003を使って、C#でアプリを作っています。
アプリの構成プロパティに『コードの最適化』という項目がありますが、
これのヘルプを見ると、
 「出力ファイルのサイズを小さくし、速度と効率を高めます。」
と書かれています。
最適化することによるデメリットというのは何かあるのでしょうか?
単純に考えてコンパイルに時間が通常よりかかるだろう・・・というのは思いつくのですが、
例えば、例外発生時のエラー情報が少なくなるから、デバッグ時には使わない方がいいとか
何か注意しないといけないことはあるのでしょうか?

よろしくお願いします。m(_ _)m
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-09 10:35
引用:

例外発生時のエラー情報が少なくなるから、デバッグ時には使わない方がいいとか


そうです。デバッグ時には当然使いません。「例外発生時のエラー情報が少なくなるから」だけでなく、書いてあるコード通りにコンパイルされないため、デバッグできません。

他は…デメリットはないと思う…。多分…。
_________________
囚人のジレンマな日々
コウイチ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 48
投稿日時: 2006-02-09 11:13
引用:

囚人さんの書き込み (2006-02-09 10:35) より:
そうです。デバッグ時には当然使いません。「例外発生時のエラー情報が少なくなるから」だけでなく、書いてあるコード通りにコンパイルされないため、デバッグできません。


デバッグできないんですね。
リリースのときは、コードの最適化した方が良さそうなので、
アプリ完成後に最適化することにします。
囚人さん、ありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-09 11:27
/optimize オプションのことかな?

引用:

/optimize より:

コンパイラを最適化すると、出力ファイルのサイズが小さくなり、動作が速くなり、処理の効率が向上します。
ただし、最適化を行うと出力ファイルにおいてコードの配置が変更されるので、/optimize+ を指定するとデバッグは困難になります。


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-02-09 11:43
引用:

コウイチさんの書き込み (2006-02-09 11:13) より:
デバッグできないんですね。


デバッグできないと言うよりも、記述したコードどおりの順番で処理が行われるわけではないので、デバッグが困難になります。
引用:

リリースのときは、コードの最適化した方が良さそうなので、
アプリ完成後に最適化することにします。


もちろん最適化を行った状態での動作確認も忘れないで下さいね。最適化をかけたことによって初めて表面化するバグもありえますので。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
コウイチ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 48
投稿日時: 2006-02-09 12:04
じゃんぬさん、ありがとうございます。
はい、/optimize オプション のことです。
すみません、デバッグ時の問題が書かれてました・・・。

最適化されたコードのデバッグの内容をみると、
引用:

最適化に対する既定の設定は、Visual C++ のデバッグ構成ではオフ、リリース構成ではオンになっています。

ただし、最適化後のプログラムでしかバグが発生しない場合もあります。このような場合は、最適化されたコードをデバッグする必要があります。


とC++について書かれているのですが、
C#でも既定で、リリース構成では最適化されているのでしょうか?
次の行を見ると、最適化するか悩みます・・・。

よろしくお願いします。m(_ _)m
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-09 12:11
引用:

コウイチさんの書き込み (2006-02-09 12:04) より:

C#でも既定で、リリース構成では最適化されているのでしょうか?


誤解がありませんか?

Debug か Release かは、あくまで構成であって、
内容が絶対的に決め打ちされるものではないですよ。

Debug ビルドで最適化をオンにだってできますし、
Release ビルドでオフにすることもできます。

設定はプロジェクトのプロパティで参照および設定できます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
コウイチ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 48
投稿日時: 2006-02-09 12:47
引用:

もちろん最適化を行った状態での動作確認も忘れないで下さいね。最適化をかけたことによって初めて表面化するバグもありえますので。


最適化したときは、確認忘れないようにします。
甕星さん、ありがとうございます。

引用:

Debug ビルドで最適化をオンにだってできますし、
Release ビルドでオフにすることもできます。

設定はプロジェクトのプロパティで参照および設定できます。


すみません、プロパティの設定は、デバッグとリリースで共通かと思ってました。
プロパティの設定で、デフォルトでは最適化オフになっていますので、
リリースのときは、最適化のオン・オフに関係なく最適化されるのかと思って質問しました><

じゃんぬさん、ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)