VCで600行ぐらいのifelse文をコンパイルしようとすると
最大値を超えるというコンパイルエラーがでました。
そこで気になることがあります。コンパイル後は最適化されると聞きますが
例えばifelseを100行ぐらいつらなるソースをコンパイルしたとき、
この場合はマシン語の中では1行目から順番に比較していっているのでしょうか。
つまり100行目までに真となる値がない場合は100回比較しているのでしょうか。
コンパイル後はswitch文の場合も似たような処理をしているのでしょうか?
どうぞご教授ください。
No.1ベストアンサー
- 回答日時:
最適化というのは、演算とかループとかの処理に対して最適化されるのが
普通だと思いますので、if~elseの文にはあまり最適化の恩恵は
ないと思います。(私の知らないコンパイラとかで最適化できるものも
あるのかも知れません。)
if~elseの文は通常、その順番どおりに比較されるので、当然最後の
if文で真になることも十分ありますし、それまでの比較を通る分、
速度的には遅くなります。
switch文の場合は、内部でテーブルとかを作って処理する場合が自然だと
思います。最後のcase部で真になる場合でもそれまでの比較が
行われているとは限らないので(振り分けているといった感じかも)
速度的には変化はないと思います。
おおまかな内容ですので答えになっていないかもしれませんが、
いかがでしょう?
レスありがとうございます。参考になります。
自作のdllでunicode→sjisをやっているのですが
それがifelse文の2階層で永遠とやっているコードなのです。
速度的には今のところ別に問題はないのですが、
switch文に訂正してみて色々と実験してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのコンパイルでコメントアウトをそのままオブジェクトに保持したい 7 2023/08/01 22:22
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- Excel(エクセル) vba コンパイル 4 2022/10/27 10:01
- 英語 "beside"と比較級の共起の可否について 5 2022/11/15 09:51
- 大学受験 高二です。 文転して経済、経営あたりを志望しているのですが、国立文系って学費以外に行くメリット何かあ 1 2022/07/07 18:09
- 大学受験 国立受験 11月からの大逆転劇を起こすには 7 2022/11/14 19:24
- その他(ブラウザ) iPhone SEです。 ソースからコンパイルする方法ってどうすればいいのですか。教えてくださると嬉 3 2022/10/02 08:08
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
すべてのリビルド: 0 正常、 0 ...
-
VB ネイティブコンパイルについて
-
Borland C++ X
-
シリアル通信の受信待ちについて
-
gcc バージョン違いによるコン...
-
サクラエディタとコンパイラ
-
Cygwinで使用しているgccをダウ...
-
C言語で作ったらWindowsでもMac...
-
EXEファイルの逆コンパイル
-
C++プログラミングの文字化けの...
-
ビープ音が鳴りません・・・
-
ビルダーとは何ですか?
-
ifelseとswitch文
-
ダイナミックリンクとスタティ...
-
fatal error LNK1112
-
AVR Studio4 の使用...
-
プログラミングの質問です。学...
-
cygwin プログラミング コンパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
math.hに含まれる関数が使えない
-
実行後にコンパイルに失敗しま...
-
c言語です コンパイルした時に...
-
ビープ音が鳴りません・・・
-
共有ライブラリの内容確認について
-
C言語をコンパイルするとコンピ...
-
すべてのリビルド: 0 正常、 0 ...
-
Verilog_HDLでのdefineとifdef
-
64ビットのlinuxで32ビットメモ...
-
C#で char型とstring型の比較で...
-
#If True Then の # って何??
-
gcc コンパイル killed
-
[COBOL] ソースの復帰
-
プレコンパイルの意味を教えて...
-
<math.h>ヘッダを入力している...
-
C言語で作ったらWindowsでもMac...
-
ヘッダーファイル『windows.h』...
-
define文のパラメータを実行時...
おすすめ情報