i'm fairly confident that the reason for the slowdown is that perl is converting to-and-from binary representation (vec) format
No. The reason for the slow-down is mostly that Perl is dispatching a bunch of op-codes while the C++ code is compiled to native machine language.
I don't think there is any conversion going on in that loop at all. It certainly isn't converting between "(vec) format" since vec deals with strings and we aren't doing any stringification here. Note that the bit-wise operators work both on strings and (unsigned) integers, figuring out which to do based on parameters given to them.
It might be doing some conversion between integers and floating point, but I doubt it is doing much of that.
-
tye