![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
コンピュータによっても異なりますが、IF文は負荷の大きい処理です。
負荷を軽減するためには、つぎのようなことを行います。
算術演算等の右辺と左辺のデータの型や大きさを同じにする。同じにしないと、通常、同じにするための命令が追加されます。
論理演算等の場合、条件の対象とするデータの特性にあわせ条件文を見直しします。
例えば、
条件Aが真のデータが20件
条件Bが真のデータが30件
条件Cが真のデータが50件
した場合、つぎの順で処理した場合
IF A ・・・
IF B ・・・
IF C ・・・
実処理では
1番目のIFは100回
2番目のIFは80回
3番目のIFは50回
計230回条件処理を行います。
これをつぎのようにした場合
IF C ・・・
IF B ・・・
IF A ・・・
実処理では
1番目のIFは100回
2番目のIFは50回
3番目のIFは20回
計170回となり、実処理が軽減されます。
また、
IF A OR B OR C
とした場合、
OR条件では、最初に条件を満たしたら、つぎ以降条件を判断しないことがあります。(コンピュータやコンパイラで異なる場合あり)
よって、つぎのように変更します。
IF C OR B OR A
他にも、コンパイラによって最適化(効率化)のオプション等があると思いますので、確かめてみてください。
No.1
- 回答日時:
if等の分岐は、並列処理、パイプライン処理による高速化をかなり妨害します。
また、分岐はキャッシュのミスヒットが起きる可能性があり、これによっても速度が低下します。
計算量が多い場合は極力減らさないと速度が出ません。
サブルーチン呼び出しも、比較的重い処理になりますし、
キャッシュへのミスヒットになる可能性がでてきます。
これは言語によらず同じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# numpyスライス機能を使った数値計算 2 2023/05/08 16:01
- その他(ソフトウェア) F-BASICで計算中の実行が中途で勝手に止まり、大変困っています。 2 2023/03/02 16:15
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- その他(コンピューター・テクノロジー) 50台の織機から回転数を取得・集計しモニターに表示したい 2 2022/11/05 15:48
- その他(パソコン・周辺機器) プログラムを教えてください 1 2022/05/26 19:42
- Excel(エクセル) EXCELのif文をifs文に変換したい 1 2022/09/22 16:42
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DoEvents関数って何?
-
キャッシュを意識したプログラ...
-
小数点を含む数値かどうか判断...
-
Chat GPTに、課題として、二と...
-
プログラム上のCPU稼働率低減に...
-
6x6ぼかしマスクをかけるプログ...
-
If Not c Is Nothing Then ~延...
-
エクセルVBAをマスターしたい
-
Excel VBAにて、2GB超の点群デ...
-
複数のファイルを読み込むバッ...
-
DLLで初回呼び出しと最後の...
-
ソートにかかった時間を測りたい。
-
Excelでのセル内容の高速消去方法
-
C言語 再帰処理のメリットとデ...
-
スーパーコンピューター 2位で...
-
LISPで・・・
-
テキスト処理の速度の速い言語
-
win10で、正確な待ち時間の作り方
-
フォートランプログラムの計算...
-
pgmファイルをC言語で読込、処...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでのセル内容の高速消去方法
-
DoEvents関数って何?
-
win10で、正確な待ち時間の作り方
-
小数点を含む数値かどうか判断...
-
Excel VBAにて、2GB超の点群デ...
-
SQLの速度をあげるには・・・
-
絶対パスの取得について
-
WebBrowserの読み込み待ちの処...
-
プログラム上のCPU稼働率低減に...
-
C言語 再帰処理のメリットとデ...
-
テキストファイルの空行をスキ...
-
実行時のCPU使用率を増やしたい
-
C言語 時刻差分の算出方法
-
Excel VBA データ削除の高速化
-
VBでの簡易電卓の作成(減算方...
-
Excel(VBA)でSetTimer関数を使...
-
プログラミングの授業でPython...
-
If Not c Is Nothing Then ~延...
-
C言語で、文字とか入力されなく...
-
C言語:関数を使うメリットとデ...
おすすめ情報