C、Embedded C++、C++ を使用して、Hello World のサイズ比較
テクニカル・ノート 11872
アーキテクチャ:
ARM
コンポーネント:
compiler
更新日:
2018/08/07 5:26
はじめに
「C++のソースをコンパイルして得られた出力は、Cのソースをコンパイルして得られた出力よりもはるかに大きい」ということが「事実」として言われています。
当然ながら、出力がある程度大きいのは事実ですが、C++の派生言語を使用する大きな理由があることも事実です。
どのくらいのメモリが使用されるのでしょうか?
メモリの基本的な消費量を比較するため、現在入手可能なCおよびC++のすべての派生言語について、「Hello World」プロジェクトを記述しました(IAR Embedded Workbench for ARMバージョン6.xxを使用)。こちらからプロジェクトをダウンロードしてください。
結果は以下のようになります。
- - - C - - -
- コンパイラ: ICCARM 6.10.3
- 言語:C
- Cの派生言語: C89/C99
- 言語の適合: 標準(IAR拡張あり)
- 最適化: 低
- ライブラリ構成:通常
- printf/scanfのフォーマッタ: フル
-
// Hello World - Plain C
#include <stdio.h>
int main (void)
{
printf ("Hello World\n");
return (0);
}
読み取り専用コードメモリ8,858バイト
読み取り専用データメモリ54バイト
読み書き可能データメモリ8,712バイト
- - - Embedded C++ - - -
- コンパイラ: ICCARM 6.10.3
- 言語: C++
- C++の派生言語: Embedded C++/拡張Embedded C++
- 言語の適合: 標準(IAR拡張あり)
- 最適化: 低
- ライブラリ構成: 通常
- printf/scanfのフォーマッタ: フル
-
// Hello World - Embedded C++
#include <iostream>
int main (void)
{
cout << "Hello World" << endl;
return (0);
}
読み取り専用コードメモリ8,928バイト
読み取り専用データメモリ252バイト
読み書き可能データメモリ42,644バイト
- - - フル仕様C++ - - -
- コンパイラ: ICCARM 6.10.3
- 言語: C++
- C++の派生言語: C++(例外あり、RTTIあり)
- 言語の適合: 標準(IAR拡張あり)
- 最適化: 低
- ライブラリ構成: 通常
- printf/scanfのフォーマッタ: フル
-
//Hello World - Full C++ with exceptions
#include <iostream>
using namespace std;
int main (void)
{
try
{
cout << "Hello World" << endl;
}
catch (...)
{
cout << "Exception happened" << endl;
}
return (0);
}
読み取り専用コードメモリ21,963バイト
読み取り専用データメモリ2,637バイト
読み書き可能データメモリ42,680バイト
概要
Hello World - 標準のC
8 858 bytes of readonly code memory
54 bytes of readonly data memory
8 712 bytes of readwrite data memory
Hello World - Embedded C++
8 928 bytes of readonly code memory
252 bytes of readonly data memory
42 644 bytes of readwrite data memory
Hello World - 例外ありのフル仕様C++
21 963 bytes of readonly code memory
2 637 bytes of readonly data memory
42 680 bytes of readwrite data memory
全ての製品名は、それぞれの所有者の商標または登録商標です。