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.
date: 2003/04/16 13:07:50; author: gerd; state: Exp; lines: +378 -460
Further speed-up of the type system. Avoid compiler notes.
The type system is now as fast as it were before.
* src/code/type.lisp: Collect type-class and structure definitions
at the beginning of the file to avoid compiler notes and get
slot accessor inlining.
(with-types-array, *ctype-arrays*): Removed.
(simplify-unions): Rewritten simplify-union-types.
(simplify-intersections): Rewritten simplify-intersection-types.
(%type-union2): Removed, inlined in type-union2.
(%type-intersection2): Removed, inlined in type-intersection2.
date: 2003/04/15 23:07:10; author: gerd; state: Exp; lines: +33 -24
Speed up the type system.
* src/code/type.lisp (*ctype-arrays*): New variable.
(with-types-array): New macro.
(simplify-union-types, simplify-intersection-types): Use it,
(%type-union, %type-intersection): Handle lists instead of
vectors returned by the simplification functionts.