My Authors
Read all threads
The fastest formatter does no formatting at all!

I have created a #rustlang formatter for debugging #embedded apps (logs!) that's ~10 (? hard to quantify) times faster than the standard library's `fmt` module and uses way less bytes of `.text` / `.rodata` (and "bandwidth")

1/
Here I "format" a timestamp and an `f32` value on a 64 MHz ARM CPU w/ FPU disabled in 6us. The formatted string is printed on the host (right)

`core::fmt`-ing the same thing (w/o a xfer) takes 57us. I must say `core`'s float formatting is v good but (still) uses 1KB of stack

2/
My formatter binary encodes the format string + arguments and sends them to the host; the host does the actual formatting

Unlike bin serialization crates there's no need to compile any crate for the host to make formatting work (IOW there's no `Deserialize` trait here)

3/
The reason for that is that all info required to decode & format the received args is stored in ... ELF metadata

Even string literals are stored in ELF metadata! The target sends indices (1-2 bytes) rather than full strings; this reduces `.rodata` usage and xfer bandwidth

4/
L: My formatter provides its own derive(Debug) that formats the sames as `core::fmt`'s

R: But you can also do cool compression tricks like having the target send the contents of a register (4 bytes) and format that on the host side as many bitfields!

5/
All this is just a proof of concept atm and not available for testing though (boo).

P.S. The 6us I quoted in part 2 could, in theory, be brought down to 2us if the data xfer took negligible amount of work but I haven't had much luck reaching the theoretical limit.

6/6
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Jorge Aparicio

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!