[comp.windows.x] Optimisation? Verification? gcc vs. cc? Sparc shared libs, GX?

jorice@csvax1.cs.tcd.ie (The Lone Biker of the Apocalypse) (01/06/90)

Before Christmas I *was* trying to get X11R3 working on my Sparcstation 1, but
with the release of R4 there isn't much point in me asking all those specific
questions about it. I'll try getting R4 working instead. But I do have a couple
of general questions:

1. Using Sun's compiler, you have the option of several levels of optimisation.
Now, I managed to get R3 going fairly well using the highest level (4) for the
server, while the libraries needed level 2 or lower. This was done by changing
the Makefile for the server. This is at odds with the recommended way of
building the system, which ties you to the same optimisation level for
everything (it being a parameter to imake). Tailored optimisation seems
sensible to me, though, even if just for the server vs. the libraries. So, what
I want to know is, which sections are safe, and worthwhile, to optimise? I know
this question is very largely system-dependent, but it's not *fully* so.
General or specific (Sparc) comments welcomed.

2. Following on from the last question, how can you tell if you've built the
system fully correctly? I was a bit uneasy to find that I couldn't get xedit
working (segmentation fault), while all other clients in the standard release
*did* work. Does this indicate that some routine in some library has been made
wrongly? Generally, how can one check that you haven't got such a nasty bug in
the system, waiting for you to call *that* obscure routine with *those*
parameters? No, I'm not so naive as to ask for bug-free software, but I would
like to give my system a pretty good work-out. Is xperf what I need? Does that
do a fairly complete checkup on the system or does it just check the more
obvious routines?

3. Which compiler is it better to use on the Sparcstation to compile X - gcc or
Sun's cc? 

4. One of the big things about SunOS 4 was the concept of shared libraries. 
These allow the same copy of a library in memory to be used by many different
running processes at the same time. The libraries are linked at run-time. From
reading the SunOS manual on the subject, it would seem to be an *incredible*
job to make a shared version of X. If I get it right, certain types of external
declarations need to be factored into new header files, and this is for *all*
of the source code for the libraries. And then the makefiles need to be altered
to access these headers and to specify shared binaries. It's a really hairy
job, as far as I can see. Can anyone comment? Is it as bad as it seems? Has
anyone (especially Sun) bitten the bullet and actually made shared versions of
the libraries?

5. There are some 8-bit colour Decstation 3100s around here. Has anyone done
performance tests between one of these and a Sparcstation1 for graphics speed
in general and X speed in particular? The Sun seems disappointingly slow on
graphics in general (I'm not just talking about X). I guess I really should ask
this in a Sun-specific group.

6. Another Sun-specific one: Sun's GX graphics accelerator board - can the
standard X library take advantage of it?


That's about it.

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (01/07/90)

    how can you tell if you've built the system fully correctly?

Sorry, there's just no simple answer to that question.  If we had a
test suite for all of X, I'm sure we'd let you know about it. :-)

    I was a bit uneasy to find that I couldn't get xedit
    working (segmentation fault), while all other clients in the standard release
    *did* work. Does this indicate that some routine in some library has been
    made wrongly?

Something's wrong, but that's not enough information to know where the problem
is.  A stack trace would be useful, for example.  If you've built with
shared libraries, you may have to relink -Bstatic to get a meaningful trace,
if it's in a library routine.

    Is xperf what I need?

x11perf (if that's what you mean) really only exercises parts of the server.

    Has anyone (especially Sun) bitten the bullet and actually made shared
    versions of the libraries?

Yes, R4 has shared libraries, as does OpenWindows.  I believe AT&T also
ships shared libraries on their box, and I think Apollo does on theirs.

    Has anyone done performance tests between one of these and a Sparcstation1
    for graphics speed in general and X speed in particular?

For X, yes we have.  Perhaps I'll post a comparison, since you've asked.

    Sun's GX graphics accelerator board - can the
    standard X library take advantage of it?

The server in the MIT distribution does not take advantage of it.