Crossfire Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CPU -- Ultima 8




--------

    I run 0.90.4 on my 486SX/25 under Linux. I noticed that when I run it the
    idle time drops to 0% and system time climbs to 91%. This is on the startin
   g
    map with nothing moving about. top says it is crossfire using the system
    time, not X. I tried changing the speed, here's what I found:
    
    speed       system %
    100000         91           (The remaining is user time)
    200000         91
    300000         72
    500000         46
    1000000        17
    

All of the system time is being spent in the floating point 
emulator.
    
    So crossfire is quite a burden even on a (ok fairly lowly) 486.

Crossfire runs fine on 386s, as long as you have a 387.

All of the timing things are done using floating point arithmatic,
rather than fixed point like they should have been, resulting
in abysmal performance on FPU less machines and less than optimal
performance on faster boxes (although adds usually execute in
one clock on the integer side of chips like the R4400, floating 
point may take 3 or 4 clocks).

At one time, I attempted to replace ]all of the floating point code
with fixed point.  Although the resulting binary core dumped 
ocassionally, it was about an order of magnitude faster on 
my FPUless 386-33.

The changes were really trivial, basically a global search and replace 
of float for fixed which was typedef'd for long, adds and subtracts were
unmodified, multiplies and divides were replaced with macros which rescaled
things afterwards, etc.

Unfortunately, I lost the patches in a disk crash, but fortunately 
I upgraded my machine to something fast enough that I don't care - but
if any one else is interested, I can point them in the right direction
and can recreate the fixed point macros, etc.