From 3e91a7f280c4f22889e2dddee6778cc9f56f6b85 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 13 Apr 2010 04:43:29 -0700 Subject: [PATCH] sets: fix performance regression in all-unique? word --- core/hash-sets/hash-sets.factor | 17 +++++++++++++---- core/sets/sets.factor | 3 --- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core/hash-sets/hash-sets.factor b/core/hash-sets/hash-sets.factor index b4bf9a1aef..3ca2cce93c 100644 --- a/core/hash-sets/hash-sets.factor +++ b/core/hash-sets/hash-sets.factor @@ -16,13 +16,22 @@ M: hash-set in? table>> key? ; inline M: hash-set adjoin table>> dupd set-at ; inline M: hash-set delete table>> delete-at ; inline M: hash-set members table>> keys ; inline -M: hash-set set-like - drop dup hash-set? [ members ] unless ; -M: hash-set clone - table>> clone hash-set boa ; +M: hash-set set-like drop dup hash-set? [ members ] unless ; +M: hash-set clone table>> clone hash-set boa ; M: sequence fast-set ; M: f fast-set drop H{ } clone hash-set boa ; M: sequence duplicates f fast-set [ [ in? ] [ adjoin ] 2bi ] curry filter ; + + + +M: sequence all-unique? + dup length hash-set boa + [ (all-unique?) ] curry all? ; diff --git a/core/sets/sets.factor b/core/sets/sets.factor index 3f441f9239..d279f036d4 100644 --- a/core/sets/sets.factor +++ b/core/sets/sets.factor @@ -92,9 +92,6 @@ M: sequence set-like M: sequence members [ pruned ] keep like ; -M: sequence all-unique? - dup pruned sequence= ; - : combine ( sets -- set ) [ f ] [ [ [ members ] map concat ] [ first ] bi set-like ]