The Arduino Print class has been implemented in a way that
causes a call to the SdFat write function for every byte when
formatting a number.That doesn't seem to be the case anymore.
Yes, Print now uses an optimized function I developed. I was amazed when the Arduino company adopted my version of Print::printNumber().
Unfortunately, the function
size_t Print::write(const uint8_t *buffer, size_t size)
is not pure virtual in the Print class. SdFat implemented write as the more general
int SdFile::write(const void* buf, size_t nbyte);
This function does not override the Print's virtual write and print was character at a time for a while in Sdfat after my mod to print was adopted.
SdFile now has this additional function which causes the optimized version of Print::printNumber() to work.
size_t SdFile::write(const uint8_t *buf, size_t size) {
return SdBaseFile::write(buf, size);
}