From ad8570be118bd1e1724164e514fd041ae56a08a2 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Wed, 24 Aug 2022 20:26:02 -0400 Subject: [PATCH] Wait, sparse initialization with a pass through the argument is faster than radix stuff --- src/builtins/selfsearch.c | 40 ++++----------------------------------- 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/src/builtins/selfsearch.c b/src/builtins/selfsearch.c index 2d3c0169..949e0936 100644 --- a/src/builtins/selfsearch.c +++ b/src/builtins/selfsearch.c @@ -24,45 +24,13 @@ B memberOf_c1(B t, B x) { u##T* xp = (u##T*)i##T##any_ptr(x); \ i8* rp; B r = m_i8arrv(&rp, n); \ TALLOC(u8, tab, tn); \ - for (usz j=0; j8 && n=256) { LOOKUP(16); } - // Radix-assisted lookup - usz rx = 256, tn = 256; // Radix; table length - u16* v0 = (u16*)i16any_ptr(x); - i8* r0; B r = m_i8arrv(&r0, n); - TALLOC(u8, alloc, 4*n+(tn+rx)); - u8 *c0 = alloc; - u8 *k0 = c0+rx; - u16 *v1 = (u16*)(k0+n); - u8 *r1 = (u8*)(v1+n); - u8 *tab= r1+n; - // Count keys - for (usz j=0; j>8)]++; - // Exclusive prefix sum - usz s=0; for (usz j=0; j>8); usz c=c0[k]++; v1[c]=v; } - // Table lookup - for (usz j=0; j>8; - for (usz i=0, e=0; i>8; - if (tv!=t0) { for (; e