Path: utzoo!attcan!uunet!husc6!mailrus!purdue!decwrl!ucbvax!pasteur!cory.Berkeley.EDU!dheller
From: dheller@cory.Berkeley.EDU (Dan Heller)
Newsgroups: comp.windows.x
Subject: Optimizing around the server
Message-ID: <5058@pasteur.Berkeley.EDU>
Date: 17 Aug 88 06:50:54 GMT
Sender: news@pasteur.Berkeley.EDU
Reply-To: dheller@cory.Berkeley.EDU (Dan Heller)
Organization: Island Graphics Corp (San Rafael, ca)
Lines: 42


At Island, we have a bunch of products we're developing/porting
to X.  As you can imagine, we do lots of graphics.  However, one
problem we're running into is the server on which our application
is run may significantly impact performance.

For example, our desk top publishing package will use XCopyArea
to render our fonts (held in pixmaps).  To display a whole page,
the performance is typically pretty bad because there is a XCopyArea
done for each character on the page.

Someone suggested that we just use internal "pixmap" type data
structures and keep them on the client rather than the way X
does it (keep them on the server) and do our own rendering into
those pixmaps and when it finally needs to be displayed, just use
one XCopyArea to get it onto the screen.  The feeling is that any
communication with the server is expensive because of 1) protocol
is slower than just keeping the data resident on the client, or 2)
sending that many bits over the wire is intrinsically slow especially
if you multiply the amount of data and header info transfered by the
number of requests that go back and forth.

Being a graphics company we have a large library of pretty impressive
and optimized graphics routines.  Doing this stuff on the client seems
to be "logical."

Because our applications run on many different types of hosts,
we're not about to try to optimize any particular server... What's
more, it's not our responsibility to the client to provide "server"
support and/or optimization.  Our clients write their own servers,
but the feeling here (internally) is that since we have all these
great graphics routines, we'd like to try to optimize the code as
best we can on the client and avoid the server as much as possible.

I am dubious about this frame of mind.  I'm undecided about whether
or not this is a good idea because something tells me that the "server"
is there for a reason and avoiding it really isn't the right thing
to do [conceptually].  If a particular server's XCopyArea is slow,
then it's out of our hands, right?  Or am I just passing the buck?


Dan Heller