in reply to Iteration speed

also, what does the input data look like? A possible place to look for speedups is to see if there's anyway you can structure your data in memory that will make it faster to determine if there is a match. (trees come to mind)

i.e. (I have no idea if this has anything to do with genetic data but the example below does :)

say you have

gat gaa gac gtc tga ctg
try creating a structure that looks like
$struct->{g}{a}{t} = 1; $struct->{g}{a}{a} = 1; $struct->{g}{a}{c} = 1; $struct->{g}{t}{c} = 1; $struct->{t}{g}{a} = 1; $struct->{c}{t}{g} = 1; you can then drop out pretty quickly as soon as there isn't a possible + completion.
If this has nothing to do with your question ignore me. I don't know a thing about protine residue sequence-a-go-go so I'm taking a stab in the dark.