Code size analysis#

pw_cobs: Consistent Overhead Byte Stuffing (COBS) codec and zero-copy frame streamer

pw_cobs is designed for small Flash and RAM footprints on microcontrollers.

The table below shows the incremental Flash footprint of:

Label

Segment

Delta

One-shot COBS encode and decode

FLASH

+36

pw::internal_result::ResultData<>::ResultData()

+84

pw::size_report::CobsSizeReport()

+10

pw::Result<>::Result<>()

NEW

+296

pw::cobs::Decoder::ProcessChunk()

NEW

+274

pw::cobs::Streamer::Write()

NEW

+188

pw::cobs::Encode()

NEW

+108

pw::cobs::Decode()

NEW

+48

std::__2::__min_element[abi:nqn240000]<>()

NEW

+34

pw::cobs::Streamer::Reset()

NEW

+32

memchr

NEW

+32

pw::cobs::(anonymous namespace)::FindFirstZero()

NEW

+30

pw::cobs::Streamer::Streamer()

NEW

+14

std::__2::min[abi:nqn240000]<>()

NEW

+14

std::__2::min_element[abi:nqn240000]<>()

+1,200

In-place EncodeBuffer

FLASH

+108

[section .rodata]

+36

pw::internal_result::ResultData<>::ResultData()

+32

pw::size_report::CobsSizeReport()

-12

vPortSVCHandler_C

+40

pw::Result<>::operator*()

+10

pw::Result<>::Result<>()

+4

__bi_84

NEW

+274

pw::cobs::Streamer::Write()

NEW

+188

pw::cobs::Encode()

NEW

+94

pw::cobs::EncodeInPlace()

NEW

+64

pw::cobs::EncodeBuffer<>::append()

NEW

+46

std::__2::__min_element[abi:nqn240000]<>()

NEW

+34

pw::cobs::Streamer::Reset()

NEW

+32

memchr

NEW

+32

pw::cobs::(anonymous namespace)::FindFirstZero()

NEW

+32

pw::cobs::EncodeBuffer<>::Encode()

NEW

+32

pw::cobs::EncodeBuffer<>::EncodeBuffer()

NEW

+30

pw::cobs::Streamer::Streamer()

NEW

+14

std::__2::min[abi:nqn240000]<>()

NEW

+14

std::__2::min_element[abi:nqn240000]<>()

+1,104

Streaming COBS Decoder

FLASH

+36

pw::internal_result::ResultData<>::ResultData()

+44

pw::size_report::CobsSizeReport()

+10

pw::Result<>::Result<>()

NEW

+296

pw::cobs::Decoder::ProcessChunk()

NEW

+32

memchr

NEW

+32

pw::cobs::(anonymous namespace)::FindFirstZero()

NEW

+20

pw::cobs::Decoder::Process()

NEW

+10

pw::cobs::Decoder::Clear()

+480

All COBS primitives combined

FLASH

+108

[section .rodata]

+36

pw::internal_result::ResultData<>::ResultData()

+172

pw::size_report::CobsSizeReport()

-12

vPortSVCHandler_C

+40

pw::Result<>::operator*()

+10

pw::Result<>::Result<>()

+4

__bi_84

NEW

+296

pw::cobs::Decoder::ProcessChunk()

NEW

+274

pw::cobs::Streamer::Write()

NEW

+188

pw::cobs::Encode()

NEW

+108

pw::cobs::Decode()

NEW

+94

pw::cobs::EncodeInPlace()

NEW

+64

pw::cobs::EncodeBuffer<>::append()

NEW

+48

std::__2::__min_element[abi:nqn240000]<>()

NEW

+34

pw::cobs::Streamer::Reset()

NEW

+32

memchr

NEW

+32

pw::cobs::(anonymous namespace)::FindFirstZero()

NEW

+32

pw::cobs::EncodeBuffer<>::Encode()

NEW

+32

pw::cobs::EncodeBuffer<>::EncodeBuffer()

NEW

+30

pw::cobs::Streamer::Streamer()

NEW

+20

pw::cobs::Decoder::Process()

NEW

+14

std::__2::min[abi:nqn240000]<>()

NEW

+14

std::__2::min_element[abi:nqn240000]<>()

NEW

+10

pw::cobs::Decoder::Clear()

+1,680