If the access is bit sequential, then yes.  But if it's random, as I expect, then a write is just a write with a bytevector rather than a read-modify-write with a u1vector.  It's even worse if you don't have efficient bitwise-and and bitwise-or but have to emulate them with arithmetic and table lookup a la SLIB.

On Mon, Jan 7, 2019 at 11:13 AM Arthur A. Gleckler <xxxxxx@speechcode.com> wrote:
On Mon, Jan 7, 2019 at 6:21 AM John Cowan <xxxxxx@ccil.org> wrote:
 
Cond-expand and macros were designed for that job.  I'm going to be implementing
a library in the future that can use either bytevectors, u8vectors, or u1vectors through
exactly those means.  Bytevectors and u8vectors, which hopefully will be the
same thing on most Schemes (Guile is an exception), use 8 times as much
space, but they are more efficient to read and write one element at a time
than u1vectors are, at least on normal architectures.

I don't understand this claim.  Could you elaborate?  Caching effects should make the more compact encoding dramatically more efficient, shouldn't they?