Maneira mais rápida de encontrar posições de incompatibilidade entre duas seqüências do mesmo comprimento

Eu tenho milhões de pares de string do mesmo tamanho que quero comparar e encontrar a posição em que ela tem incompatibilidade.

Por exemplo, para cada$str1 e$str2 queremos encontrar a posição de incompatibilidade com$str_source:

$str_source = "ATTCCGGG";

$str1       = "ATTGCGGG"; # 1 mismatch with Str1 at position 3 (0-based)
$str2       = "ATACCGGC"; # 2 mismatches with source at position  2 and 7

Existe uma maneira rápida de fazer isso. Atualmente eu tenho o método de estilo C que eu faço loop em todas as posições em ambas as strings usando a função 'substr'. Mas essa abordagem é terrivelmente lenta.

my @mism_pos;
for $i (0 .. length($str_source)) {
   $source_base = substr($str_source,$i,1);
   $str_base    = substr($str2,$i,$1);

  if ($source_base ne $str_base) {
     push @mism_pos,$i;
  }

}

questionAnswers(9)

yourAnswerToTheQuestion