[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A whole bunch of bug reports and patches



Rob -- 

Thanks much for the patches to stop float consing.  It worked wonders --
on one of my set of simulation runs, they increased overall performance by
nearly 20 percent due to drastically decreased consing.

As a note, the above partial float cons optimization is strongly
indicative of how much good a full function float cons optimization
(e.g.  not consing when the function return-type has been declared
to be a single-float) would do.  My experience comparing CMU-lisp to
Lucid on the Sparc has found CMU-Lisp faster in most things, but because
Lucid doesn't cons when returning float values, my overall simulation
runs are approximately 20 % slower in CMU-lisp than Lucid.  Your
patch for the simple cons case actually made the CMU runs of the
above-mentioned set of simulations competitive with Lucid (though not
most cases, which see heavier traffic on the general float cons problem) --
the mind boggles at how much better CMU-lisp would be than Lucid if the float
consing could be eliminated in the general case (or at least declared cases).
It's too bad there isn't an easy fix for this...

One note on the patches; they did seem to bring up one problem.  It might
just have happened due to my having loaded the compiled patches on top of
the normal 15a instead of recompiling completely, but I thought you'd
better have a look at it:

* (defun test1 (char length)
  (declare (character char))
  (make-string length :initial-element char))

TEST1
* (compile *)
Compiling LAMBDA (CHAR LENGTH): 


Error in function C::VOP-PARSE-OR-LOSE.
C:MOVE is not the name of a defined VOP.

Restarts:
  0: Return to Top-Level.

Debug  (type H for help)

(DEBUG::DEBUG-LOOP)

- It only happens when :initial-element is provided and the type
of Char has been declared to be character.

----

Thanks again,

- Trent