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

 全ての製品名は、それぞれの所有者の商標または登録商標です。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。