X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=OPTIMIZATIONS;h=45b5463330ee21f30352616c48d4d4eaf6c1ded0;hb=8643c93d4db277f6e1cb880a42407ff29e19f618;hp=d234ce3d432b468991a5460afaea9236847fb055;hpb=f68d0f59fa6f9c448b3a147b5940937af03f940a;p=sbcl.git diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index d234ce3..45b5463 100644 --- a/OPTIMIZATIONS +++ b/OPTIMIZATIONS @@ -224,6 +224,12 @@ Initialization of stack-allocated arrays is inefficient: we always fill the vector with zeroes, even when it is not needed (as for platforms with conservative GC or for arrays of unboxed objectes) and is performed later explicitely. + +(This is harder than it might look at first glance, as MAKE-ARRAY is smart +enough to eliminate something like ':initial-element 0'. Such an optimization +is valid if the vector is being allocated in the heap, but not if it is being +allocated on the stack. You could remove this optimization, but that makes +the heap-allocated case somewhat slower...) -------------------------------------------------------------------------------- #28 a. Accessing raw slots in structure instances is more inefficient than @@ -410,3 +416,26 @@ altogether. The former option is probably easier than the latter. Dynamic extent allocation doesn't currently work for one-element lists, since there's a source transform from (LIST X) to (CONS X NIL). +-------------------------------------------------------------------------------- +#38 + +(setf (subseq s1 start1 end1) (subseq s2 start2 end1)) + +could be transformed into + +(let ((#:s2 s2) + (#:start2 start2) + (#:end2 end2)) + (replace s1 #:s2 :start1 start1 :end1 end1 :start2 #:start2 :end2 #:end2)) + +when the return value is unused, avoiding the need to cons up the new sequence. + +-------------------------------------------------------------------------------- +#39 + +(let ((*foo* 42)) ...) + +currently compiles to code that ensures the TLS index at runtime, which +is both a decently large chunk of code and unnecessary, as we could ensure +the TLS index at load-time as well. +