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");