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