- - PR -
DebugモードとReleaseモードの速度差について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-17 13:23
こんにちわ、最近仕事で携わるようになったASP.NET(VB)のシステムが
Debugモードで生成したDLLとPDBを使用して稼動しているようなのですが Releaseモードで生成したDLLとの処理速度差が気になります。 Debugモードで生成するとデバッグ情報を含んでいるので 処理がReleaseのそれと比べて遅くなるのではないかと考えているのですが 実際どのくらいパフォーマンスに差が出るのか もしご存知の方いらっしゃいましたら、コメントいただけませんでしょうか。 よろしくお願いします。 | ||||
|
投稿日時: 2005-10-17 13:35
まつとうや さん、こんにちは。
これは作ったモノに因ります。 速度差を全く感じないものもありますし、さまざまです。 また、実際のパフォーマンスの値は EULA 上、 勝手に公表できないことになっていたハズです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-10-17 13:42
こんにちは。
ASP.NETは使ったことありませんが、VC++ではデバッグモードでも大抵の場合はさほど処理速度は変わらないです。 ただし、コードの最適化のオプションによってはReleaseが劇的に早くなることもあります。 ※メインのループが命令キャッシュにすべて入った場合や最適化によって無駄ループが排除されたりなど。 ブレイクポイントやスタック境界チェック、ぬるぽチェックなどはCPU(IA32)の保護機能によって実装されているのでコードの実行が冗長になる事もあまりないと思います。 パフォーマンスが悪化する要因としては ・プログラムサイズが大きくなる=ロードに時間がかかる+CPUの命令キャッシュに収まらなくなる。 ・最適化がオフになる=ループの最適化やレジスタの最適化、分岐の最適化が行われない。 ・使用するメモリ空間が大きくなる。 ・ライブラリがデバッグ用のコードになるので多少遅くなる。 ※ハイパフォーマンスを要求するようなプログラムでなければさほど気にならないと思います。 実際のパフォーマンスの違いはアルゴリズムによって大きく変わってくると思いますので、一概にどうとは云えません。 実際のソースがあるなら、実測してみたらいいと思います。 これは私の経験上のことですので、確証は持てませんので参考までに。 識者の方、ヘルプです。^^; [ メッセージ編集済み 編集者: jk 編集日時 2005-10-17 13:46 ] | ||||
|
投稿日時: 2005-10-18 09:13
じゃんぬねっと様、jk様
アドバイスをありがとうございました。 ケースbyケースで実際動かしてみないと分からないということで 納得出来ました。 10年くらい前にC++でWindowsアプリを開発していたものとしては 絶対Releaseの方が早いのではないかと思っていましたが 最近はそうでもないんですね、有難うございました。 | ||||
|
投稿日時: 2005-10-18 09:27
第三者が誤解しないように補足しますが、基本は Release の方が早いですよ。 例外周辺なんて特にそうです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-10-18 19:18
こんにちは。便乗の質問ですが・・・
.Netにおいて、デバッグモードとリリースモードで生成されるexe/dllファイルには どのような違いがあるのでしょうか? デバッグモードではpdbファイルも一緒に生成されますが、このファイルを 削除しても普通にexe等は動きますよね? ネイティブの場合にはファイルサイズが1ケタ違ってましたが・・・ マネージドの場合にはどう違うんだろう。 | ||||
|
投稿日時: 2005-10-22 01:41
実行レベルの込み入った話ではなく、VS2003でビルドした場合の話ですが、、 明示的にプリプロセッサディレクティブを書いている場合は明確な違いがありますよね? MSDNよりもどぼんさんの記事がわかりやすいです。 http://dobon.net/vb/dotnet/programing/define.html | ||||
|
投稿日時: 2005-10-23 08:11
なるほどね、よくわかりました。ありがとうございました。
昔VB6で組んでたころはよく #define DEBUG(構文違うかも・・・) なんてことをやって、リリース直前に消すなんてことやってたんですが、 これが自動で出来るのでとても便利ですね |
1