Are you using the latest release of Arduino 1.0?
Are you using a 8 MHz board?
When I run your sketch I get this
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
956
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
952
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
956
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
956
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
956
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
952
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
956
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
952
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
952
This is still very slow. I have been working with sixeyes to optimize writing strings to a serial port. See http://arduino.cc/forum/index.php/topic,85207.0.html.
The problem is that print(const char*) ends up writing to the buffer a character at a time. My new serial library is faster but still a bit slow since Print::print(const char*) calls Print::write(const char*) which does character at a time writes.
With my new library I get
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
276
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
276
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
272
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
272
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
272
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
I have optimized write(const char*) in my new serial library. I will soon post the version with optimized write(const char*).
If I change the print to write with my new library like this:
#include <SerialPort.h>
// port zero, 63 byte RX buffer 63 byte TX buffer
SerialPort<0, 63, 63> NewSerial;
#define Serial NewSerial
unsigned long timebegin;
unsigned long timeend;
void setup()
{
Serial.begin(57600);
}
void loop()
{
timebegin = micros();
Serial.write("lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj");
timeend = micros();
Serial.println();
Serial.println(timeend-timebegin);
delay(100);
}
I get very fast buffering:
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
52
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
56
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
60
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
52
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
64
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
64
lkjljlkjlkjljlkjlkjlkjlkjlkjlkjlkj
52