
No.1ベストアンサー
- 回答日時:
簡単に言うと
1.引数のコピー処理
2.CALL命令
3.戻り値のセット処理
4.RET命令
の分が多くなります。
変な例えですが、冷蔵庫を家の外に置いておくと、上着を着て履物を履いて出て行き、戻ると履物を脱いで、上着を脱ぐといったようなものです。
上の1の引数のコピー処理はCall by value(値渡し)の場合におこります。
No.3
- 回答日時:
引数や返却値のコピーとサブルーチンの往復に関しては既に別の方が回答されていますが、それ以外にも違いが現れます。
インライン関数を呼び出す部分をコンパイルする際、コンパイラは呼び出そうとする関数の中身のことまで全て分かることになります。これによって関数の枠組みを超えた最適化が可能になります。
関数の枠組みを超えた最適化は、引数に定数式を渡した場合等に最も顕著になり、場合によっては関数の呼び出しが単なる定数として展開される可能性もあります。
他に、例外処理に関しても大きな影響が現れます。例外指定によって明示的に例外が発生しないことを宣言しない限り、通常の関数であればあらゆる例外が発生するものとして、それに対応するために処理を展開する必要がありますが、インライン関数であれば、関数の中身が分かっていますから、可能であれば例外が発生しないものとして扱うことが可能になります。これによって(多くの場合)速度もサイズも大幅な改善が可能になります。
No.2
- 回答日時:
単純な例でいいますと、こうなります。
for(i=0;i<10;i++) { func(); }
は
funcの中身;funcの中身;funcの中身;funcの中身;funcの中身;funcの中身;funcの中身;funcの中身;funcの中身;funcの中身;
のようになります。
上記の例ですと、i変数を使ってループしていますが、i変数を加算したり評価したりする部分、
そして、関数のcall、引数のセット等、ret がなくなり、その分だけ速度が向上します。
しかし、funcの中身が大きかったりループ数が多ければ
命令がL1キャッシュに入りきらず、かえって速度が低下することがあるので
コンパイラはそのあたりも自動的に判断します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 複素関数と実関数のテーラー展開の違いについて 1 2022/08/09 06:18
- 数学 「f(z)=1/(z^2-1)に関して ローラン展開を使う場合、マクローリン展開を使う場合、テイラー 3 2022/08/27 19:56
- 数学 tan(z)をローラン展開して tan(z)=-1/(z-π/2)+(1/3)(z-π/2)+… と 14 2023/01/17 10:33
- 飲食店・レストラン 「チェーン店」=「フランチャイズチェーン店」ですか? 直営飲食店が複数ある場合の店は何と呼ばれるの? 2 2022/04/09 11:31
- その他(ビジネス・キャリア) お客を騙して、店が調べられたら 1 2022/09/25 07:50
- docomo(ドコモ) 1つの携帯ショップに複数の携帯代理店の社員がいる理由 3 2023/06/10 00:21
- 物理学 フーリエ級数展開をExcelのFFTでシミュレートする 5 2023/07/03 22:02
- 数学 多変数関数の微分とテイラー展開について 5 2022/04/24 16:55
- 数学 コーシーリーマンの関係式の誘導 2 2022/06/13 10:35
- C言語・C++・C# Makefileのechoの展開について 2 2022/07/26 07:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
コンパイルできない
-
秀丸エディタでのC言語環境(ハ...
-
C++ で、「)」が必要 というエ...
-
IPアドレス表示プログラム
-
関数の戻り値による変数の初期化
-
__extension__
-
正しい五十音順について
-
あるプログラムのコマンドライ...
-
VBAで仕様書は書きますか?
-
バッチファイルでUSB挿入時に実行
-
VBAの再計算が反映されない件に...
-
Excelで4096点以上のFFTの方法
-
Vba UserFormを前面に出す方法...
-
【JAVA】数字をひし形に出力す...
-
EXCELなどで「返す」という表現
-
VB6のWScript.Shellについて
-
読み込み中にアクセス違反が発...
-
プラグインの作り方を教えて下さい
-
CとFORTRANの計算速度はどちら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
C++でアボート(Abort)で処理が...
-
C++ で、「)」が必要 というエ...
-
io.hをincludeするとそのような...
-
コンパイラの制限 : ヒープの領...
-
不要なインクルードファイルの検出
-
どのプログラミング言語ででき...
-
Eclipseの環境設定について
-
コンパイルできない
-
初心者はIDE使わないほうが良く...
-
FORTRAN→Cに翻訳
-
fortranでのNaNについて
-
関数の戻り値による変数の初期化
-
ABAQUS ユーザーサブルーチン...
-
sprintfを用いたフォーマット文...
-
__extension__
-
変数(関数)名の頭に_
-
makeのエラーについて
-
volatile修飾について
-
C言語のワーニングメッセージの...
おすすめ情報