Drawing a BufferedImage to a BufferStrategy's Graphics object is slow

I am experimenting with full screen exclusive mode and I found that drawing a BufferedImage to a BufferStrategy’s Graphics object is slow. I’m using a BufferedImage as opposed to a VolatileImage because I want to constantly manipulate it on the pixel level.

BufferedImage buffer = new BufferedImage(256, 256, BufferedImage.TYPE_INT_RGB);
int[] pixels = ((DataBufferInt)buffer.getRaster().getDataBuffer()).getData();

Here’s how I’m drawing it:

g = bufferStrategy.getDrawGraphics();
if (g != null) {
  if (!bufferStrategy.contentsLost()) {        
    g.drawImage(buffer, imageX, imageY, imageWidth, imageHeight, null);
    bufferStrategy.show();        
  }
  g.dispose();
}

The code certainly works, but I timed g.drawImage() and I found that it can take up to 10 milliseconds. If I render directly to a Canvas within a JFrame, it takes a fraction of a millisecond.

In full screen exclusive mode, it might be forced to convert the BufferedImage for compatibility reasons before rendering, which might be eating up all that time. Or, it might be waiting for VSync or something.

Has anyone else noticed these performance problems?