May 26, 2018
Class for vectors of 1-bit booleans
True boolean datatype no NAs, coercion from and to logicals, integers and integer subscripts; fast boolean operators and fast summary statistics. With ‘bit’ vectors you can store true binary booleans FALSE,TRUE at the expense of 1 bit only, on a 32 bit architecture this means factor 32 less RAM and ~ factor 32 more speed on boolean operations. Due to overhead of R calls, actual speed gain depends on the size of the vector expect gains for vectors of size > 10000 elements. Even for one-time boolean operations it can pay-off to convert to bit, the pay-off is obvious, when such components are used more than once. Reading from and writing to bit is approximately as fast as accessing standard logicals - mostly due to R’s time for memory allocation. The package allows to work with pre-allocated memory for return values by calling .Call directly when evaluating the speed of C-access with pre-allocated vector memory, coping from bit to logical requires only 70 of the time for copying from logical to logical; and copying from logical to bit comes at a performance penalty of 150. the package now contains further classes for representing logical selections ‘bitwhich’ for very skewed selections and ‘ri’ for selecting ranges of values for chunked processing. All three index classes can be used for subsetting ‘ff’ objects ff-2.1-0 and higher.