Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

4 Commits

Repository files navigation

Profiler for Arduino

This is an Arduino Library for memory and performance profiling, and the detection of memory leaks.

IMPORTANT: Depending on the Compiler optimization level, you may not necessarily notice any change when testing this because any variables you declare may be optimized out of the code. This can lead to varying results.

Usage example:

#include<Profiler.h>
Profiler profiler;
bool state = LOW;
voidsetup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(57600);
Serial.print(F("Memory usage at start: "));
Serial.print(profiler.getInitRAM()); // Maximum Free RAM available initially
Serial.print(F(", cont. Block: "));
Serial.println(profiler.getInitBlock()); // Initially available max Block sizedigitalWrite(LED_BUILTIN, state);
}
voidloop() { // We toggle the LED to show something is happening 
state = !state;
digitalWrite(LED_BUILTIN, state);
Serial.print(F("Memory currently free: "));
Serial.print(profiler.getFreeRAM()); // Currently free RAM
Serial.print(F(", cont. Block: "));
Serial.println(profiler.getFreeBlock()); // Currently max continous Block // Add different variables here to get some idea on how the values change!// Let's create a "fake" memory leak on purpose by allocating memory and then throwing away the// pointer in the next loop. This consumes 102 Bytes of memory. After a while the Arduino can // randomly crash on us, too, because the code is obviously broken.
byte* ptr = (byte*)malloc(100);
// Assign some stuff so the compiler optimization doesn't get smart on us and optimizes this away
ptr[0] = 5;
ptr[1] = 5;
delay(1000);
}

About

An Arduino Library for memory and performance profiling, and the detection of memory leaks.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages