[racket-dev] bit-vectors and serialization

From: Ryan Culpepper (ryan at cs.utah.edu)
Date: Mon Dec 17 16:35:18 EST 2012

On 12/17/2012 04:30 AM, Jens Axel Søgaard wrote:
> 2012/12/17 Ryan Culpepper <ryan at cs.utah.edu>:
>> I'd like to make bit-vectors serializable so I can replace sql-bits with
>> them. I'll deprecate the current sql-bits names but keep them around for a
>> while.
>>
>> The issue is that bit-vectors are implemented using fxvectors, which are
>> serializable, but simply serializing them will presumably cause errors if a
>> bit-vector is serialized on a 64-bit machine and deserialized on a 32-bit
>> machine or vice versa.
>>
>> One solution would be to use bytes instead of fxvectors. The performance is
>> about the same as far as I could tell using the sieve benchmark.
>>
>> Another option is to declare that serialization across word sizes doesn't
>> work for bit vectors.
>>
>> Any opinions?
>
> The sieve-benchmark works on individual bits, so it makes sense that
> the performance is about the same. What happens for operations that
> work on words (e.g. the popcount operation)? My intuition is that
> these operations will be slower.

True, popcount takes about three times as long as it used to. With a few 
additional changes, popcount on a million-bit bit-vector takes 1.1 ms 
using bytes, as opposed to 0.35 ms using fxvectors. (Tested on a 64-bit 
machine.)

Ryan


Posted on the dev mailing list.