Christophe Rhodes <csr21@...> writes:
> The change is simply to use lists rather than adjustable vectors when
> performing type algebra.
I haven't built SBCL with the change, but I can tell a story from
porting your type system changes to CMUCL:
If I remember the circumstances right, I had to rewrite the simplify
union/intersection part, because I couldn't bootstrap the structures
used in the type system (yeah, yeah, I know :) in exactly the way SBCL
has them, but the rewrite used vectors like SBCL.
That slowed down CMUCL's build by a noticeable amount. Alas, I don't
remember the figures, but I'm quite sure it was >10%. Rewriting the
simplification to use lists was a major factor in making the build as
fast as it was with the old type implementation.
revision 1.55
date: 2003/04/16 13:07:50; author: gerd; state: Exp; lines: +378 460
Further speedup of the type system. Avoid compiler notes.
The type system is now as fast as it were before.
* src/code/type.lisp: Collect typeclass and structure definitions
at the beginning of the file to avoid compiler notes and get
slot accessor inlining.
(withtypesarray, *ctypearrays*): Removed.
(simplifyunions): Rewritten simplifyuniontypes.
(simplifyintersections): Rewritten simplifyintersectiontypes.
(%typeunion2): Removed, inlined in typeunion2.
(%typeintersection2): Removed, inlined in typeintersection2.

revision 1.54
date: 2003/04/15 23:07:10; author: gerd; state: Exp; lines: +33 24
Speed up the type system.
* src/code/type.lisp (*ctypearrays*): New variable.
(withtypesarray): New macro.
(simplifyuniontypes, simplifyintersectiontypes): Use it,
return lists.
(%typeunion, %typeintersection): Handle lists instead of
vectors returned by the simplification functionts.
