From 00fbe7dfe9288d83ddafa714dfcc49d8bccd0f4f Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 18 May 2014 22:49:39 -0700 Subject: [PATCH] interval-sets: faster find-interval. --- basis/interval-sets/interval-sets.factor | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/basis/interval-sets/interval-sets.factor b/basis/interval-sets/interval-sets.factor index 4fdcfc3634..c547b87483 100644 --- a/basis/interval-sets/interval-sets.factor +++ b/basis/interval-sets/interval-sets.factor @@ -15,8 +15,9 @@ ALIAS: start first-unsafe ALIAS: end second-unsafe : find-interval ( key interval-set -- slice ) - array>> 2 - [ start <=> ] with search nip ; inline + array>> swap dupd [ >=< ] curry search drop + [ dup even? [ dup 1 + ] [ [ 1 - ] keep ] if rot ] + [ drop f ] if* ; inline ERROR: not-an-interval-set obj ; @@ -46,7 +47,7 @@ PRIVATE> drop dup first2 < [ unclip-slice , ] [ 2 tail-slice ] if - (delete-redundancies) + (delete-redundancies) ] } case ;