Making your own custom USB device has quite a large upfront cost since you need to buy a PID/VID.
volatile does not imply compiler fence on gcc, so this code has a race condition when updating read/write_position, you need compiler barriers here >data[write_position] = value; >COMPILER_BARRIER(); // __asm__…
There's no reason to assume that code would contain fewer bugs.
For now... Wait a few months/a year and they will find a reason to "take advantage" of that increase in performance and slow it back down again.
I always find "language X is faster than Y" statements funny when language X's runtime is written in language Y.
Making your own custom USB device has quite a large upfront cost since you need to buy a PID/VID.
volatile does not imply compiler fence on gcc, so this code has a race condition when updating read/write_position, you need compiler barriers here >data[write_position] = value; >COMPILER_BARRIER(); // __asm__…
There's no reason to assume that code would contain fewer bugs.
For now... Wait a few months/a year and they will find a reason to "take advantage" of that increase in performance and slow it back down again.
I always find "language X is faster than Y" statements funny when language X's runtime is written in language Y.