Reducing bit-sets performance regression somewhat
parent
67912db5f1
commit
fab9a925c3
|
@ -30,6 +30,11 @@ M: bit-set delete
|
||||||
! of the same length.
|
! of the same length.
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
|
ERROR: check-bit-set-failed ;
|
||||||
|
|
||||||
|
: check-bit-set ( bit-set -- bit-set )
|
||||||
|
dup bit-set? [ check-bit-set-failed ] unless ; inline
|
||||||
|
|
||||||
: bit-set-map ( seq1 seq2 quot -- seq )
|
: bit-set-map ( seq1 seq2 quot -- seq )
|
||||||
[ 2drop length>> ]
|
[ 2drop length>> ]
|
||||||
[
|
[
|
||||||
|
@ -62,13 +67,20 @@ M: bit-set subset?
|
||||||
M: bit-set members
|
M: bit-set members
|
||||||
[ table>> length iota ] keep [ in? ] curry filter ;
|
[ table>> length iota ] keep [ in? ] curry filter ;
|
||||||
|
|
||||||
M: bit-set set-like
|
<PRIVATE
|
||||||
|
|
||||||
|
: bit-set-like ( set bit-set -- bit-set' )
|
||||||
! This crashes if there are keys that can't be put in the bit set
|
! This crashes if there are keys that can't be put in the bit set
|
||||||
over bit-set? [ 2dup [ table>> ] bi@ length = ] [ f ] if
|
over bit-set? [ 2dup [ table>> length ] bi@ = ] [ f ] if
|
||||||
[ drop ] [
|
[ drop ] [
|
||||||
[ members ] dip table>> length <bit-set>
|
[ members ] dip table>> length <bit-set>
|
||||||
[ [ adjoin ] curry each ] keep
|
[ [ adjoin ] curry each ] keep
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
M: bit-set set-like
|
||||||
|
bit-set-like check-bit-set ; inline
|
||||||
|
|
||||||
M: bit-set clone
|
M: bit-set clone
|
||||||
table>> clone bit-set boa ;
|
table>> clone bit-set boa ;
|
||||||
|
|
Loading…
Reference in New Issue