in reply to Counter - number of tags per interval

The input you're showing is too short for producing performance problems!

So what are the real dimensions?

For instance

Knowing these parameters help preprocessing costly parts.

Considering var names:

Names like input1, input2, hash1, hash2, key1, key2, p and o really don't improve readability!

Try descriptive names like $point, $start, $stop, %count and %active.

And please don't delete comments!

HTH!

Cheers Rolf

( addicted to the Perl Programming Language)

update

I don't know if its much faster, but an approach reading all data into array and counting over slices will at least improve readablity:

DB<159> use List::Util qw/sum/ => 0 DB<160> \@a => [0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1] DB<161> $start=4;$stop=11 => 11 DB<162> $count{"a"}{$start}{$stop}=sum @a[$start..$stop] => 3

I'm pretty sure this approach could be translated to counting single bits with vec or pack