
Using XPutImage, your source is maintained by the client and the
destination is maintained by the server, thus you incur the overhead
of transporting through whatever client-server communications
mechanism you are using.

Is it possible for you to maintain your source images in pixmaps?
These are maintained by the server, so copying them into a window is
much cheaper.

Also make sure you are not sending any unnecessary XSyncs, or running
in XSynchonize mode.
-- 