c:\test>hashsize -N=1e3 normalHash: 58156 compactedHash: 46156 c:\test>hashsize -N=1e4 normalHash: 605596 compactedHash: 485596 c:\test>hashsize -N=1e5 normalHash: 5924348 compactedHash: 4724348 #### vec( $string, $_, 2 ) = $acgt{ substr $string . 'a' x 16, $_, 1 } for 0 .. 15; #### ## vvvvv vec( $bits, $_, 2 ) = $acgt{ substr $string . 'a' x 16, $_, 1 } for 0 .. 15; #### ## sv.c PP(pp_vec) { dVAR; dSP; dTARGET; register const IV size = POPi; // register const IV offset = POPi; register const UV offset = POPi; register SV * const src = POPs; ## doop.c UV //Perl_do_vecget(pTHX_ SV *sv, I32 offset, I32 size) Perl_do_vecget(pTHX_ SV *sv, U32 offset, I32 size) ... void Perl_do_vecset(pTHX_ SV *sv) { dVAR; // register I32 offset, bitoffs = 0; register U32 offset register I32 bitoffs = 0; register I32 size; register unsigned char *s; register UV lval; I32 mask; STRLEN targlen; STRLEN len; SV * const targ = LvTARG(sv); if (!targ) return; s = (unsigned char*)SvPV_force(targ, targlen); if (SvUTF8(targ)) { /* This is handled by the SvPOK_only below... if (!Perl_sv_utf8_downgrade(aTHX_ targ, TRUE)) SvUTF8_off(targ); */ (void) Perl_sv_utf8_downgrade(aTHX_ targ, TRUE); } (void)SvPOK_only(targ); lval = SvUV(sv); offset = LvTARGOFF(sv); // if (offset < 0) // Perl_croak(aTHX_ "Negative offset to vec in lvalue context");