From: Dave Tenny

Subject: log*, boole, dpb, and bit* functions in Franz lisps

Date: 1998-3-19 11:56


What's the philosophy on when to use integers for bit-set operations, and when
to use bit vectors?

I need to manipulate very large bit vectors.  I want the manipulations to be
efficient.  Bit vectors seem like the obvious choice.  However there are two
things about integers and the log* functions which I also find nice:

1) ldb and dpb seem like they might be more efficient for manipulating ranges
    of bits.  

2) The ability to perform logical operations on bit sets of different lengths
     only works with the log*/boole functions.  

Also, if there's a function to turn a bit vector into an integer, I haven't
found it, but I'm referring to my copy of CLTL2 and not the standard.  Is there
an efficient method for integer<->bitvector conversions?

Looking for tips from the masters, I don't have a lot of experience with the
bit functions, and have a big bitmap intensive project pending.  Long term
I'm prepared to use FFI and C++ code I already have for the bitvector 
manipulation, but short term I need a quick and reasonably efficient product
to sell, ASAP, and so I want to avoid the FFI issues for now.

I'm using ACL 3.0.2 now, and expect to use 4.3.2 soon, followed by 5.0 when 
shipped, on Windows NT.

Thanks,
Dave Tenny