- ベストアンサー
手続きのインライン展開 基準
コンパイラ型言語における手続きのインライン展開についてです。 例えばC++の場合、inline指定子をつけるなどしてインライン展開を促しますが, 長い手続きの場合はインライン展開されないと記憶しています。 お尋ねしたいことは2つあります。 1つ。1箇所でしか呼び出されない手続きの場合、どんなに長くても、インライン展開したほうがより最適なプログラムになるのではないか? 2つ。1箇所でしか呼び出されない手続きの場合、最適化モードでコンパイルするなりインライン展開指定するなりすれば、インライン展開は行なわれるか? 暇な時にでも、どなたか教えていただけたら幸いです。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- インライン展開でコンパイラが何をやっているのか知りたいです
インライン展開すると、関数の呼び出しオーバーヘッドが小さくなることはわかるのですが、インライン展開した場合としていない場合と、なぜ関数呼び出しのオーバーヘッドがなくなるのかアセンブルレベルでの違いがよくわからないです。 関数をインライン展開した場合、コンパイラはどのようにコンパイルするのか、そしてその関数実行時の振る舞いがインライン展開なしの場合とどう違うのか、わからないので教えていただけませんか? 以上、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 再帰関数のインライン展開
再帰関数のインライン展開は出来るのでしょうか? もし、出来るようならアセンブラではどのように表現されているんですか? C以外の言語でも、再帰関数のインライン展開が出来るプログラム言語があれば教えてください。
- ベストアンサー
- C・C++・C#
- インライン関数
インライン関数として認識されなくても、通常の関数として実行されるのなら、プログラムする際にはすべての関数にinlineと書けばいいと思います。 インライン関数を使えば実行速度が上がる。それなら何故コンパイラ側で通常の関数すべてをインライン関数として認識しないのかがわかりません。inlineと書く手間が省けるので。 lnline関数として認識しようとしたができず、通常の関数として実行する時は、通常の関数を普通に実行するときよりも実行速度が遅くなるのでしょうか?もし、遅くならないのならすべての関数をinline関数として書けばいいと思います。どうなんでしょうか?お願いします。
- 締切済み
- C・C++・C#
- GNUコンパイラとIntelコンパイラの違いについて
今回fortranとC言語で書かれたWindows用プログラムをLinux用に移植することになりました。GNUのコンパイラを使用し無事コンパイルできたので実行したのですが"Segmentation fault"となりうまく実行できませんでした。そこで試しにIntelのコンパイラを使用しコンパイルしてみたところGNUのときとは違い"Segmentation fault"とは出ず、プログラム内のエラーチェックに引っかかり止ってしまいました。同じソースコードにもかかわらず止まる箇所が異なります。 今まで考えたことがなかったのですがGNUとIntelのコンパイラの違いはなんなのでしょうか?また、この二つ以外にいいコンパイラはあるのでしょうか?
- ベストアンサー
- C・C++・C#
- コンパイルの実行の仕方
初めてプログラミング言語を授業でとったのですが、 コンパイルの【実行】の仕方がわかりません。 まず、コマンドプロンプトを開くまではわかったのですが、 学校での説明に 「javaのコンパイラはjavacであるので、以下のように指定する。 javac <ソースファイル名> 」 と書いてありました。 コンパイラというのは上記の場合、コマンドプロンプトに 「C:\>javac *****.java」を入力すればコンパイルしたということになるのでしょうか? 「指定する」とかいてあっても指定の仕方すらわからないのです。 コンパイルを検索してもなかなかコンパイルをする意味がよくわからないので、よろしければ教えてください。
- 締切済み
- Java
- C言語での質問です
C言語を始めて、2ヶ月くらいです。コンパイラは、Borlandc++で、エディタは、bcpadに付いていたものを使っています。 「サンプル通り作成したプログラムがコンパイルエラーになり」 一つ一つ確認しても、間違っている箇所が見つかりません。一人で解決できないとき、皆さんはどのようにして解決していますか。
- ベストアンサー
- Windows XP
- CとJavaはどのくらいスピードが違うの?
BorlandのJBuilderなど、Javaもネイティブコードコンパイラがありますよね。質問ですが、 (1) UNIXで動くJavaのネイティブコードコンパイラで優秀なものはあるのでしょうか。 (2) C言語でコンパイルしたプログラムとJavaでネイティブコードコンパイルしたプログラムは、どのくらい速度に差があるのでしょうか? たとえば、Visual Basicも最近のバージョンはネイティブコードコンパイルができますが、C言語で作った同じ論理構造のプログラムに比べて、やはり、かなり実行速度が劣ります。
- 締切済み
- Java
- FedraCore4でのC言語
簡単なCのプログラムをテストしようとしたのですが、コンパイラが見つかりません。 パッケージを全部インストールしていない状況でC言語のプログラムををコンパイルするにはどうすればよいのでしょうか?
- 締切済み
- Linux系OS
お礼
回答ありがとうございます。 自分が知りたいことは十分知ることができました。 インライン展開の効果が一番現れるのはどんなときか、という点まで教えていただき勉強になりました。