Arduino言語とC言語のコンパイルサイズを比べてみる

Arduinoコード

void setup(){
  pinMode(13,OUTPUT);
}

void loop(){
  digitalWrite(13,HIGH);
  delay(1000);
}

実行結果

----------------
Device: atmega328p

Program:    1062 bytes (3.2% Full)
(.text + .data + .bootloader)

Data:          9 bytes (0.4% Full)
(.data + .bss + .noinit)

C言語コード

#include <avr/io.h>
#include <util/delay.h>

int main(void){
  DDRB |= _BV(PORTB5);
  while(1){
    PORTB ^= _BV(PORTB5);
    _delay_ms(1000);
  }
}

実行結果

----------------
Device: atmega328p

Program:     206 bytes (0.6% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)

これだけ違えばArduinoがゆとり扱いされるのも分かる。