Самый быстрый способ найти позиции несоответствия между двумя строками одинаковой длины

У меня есть миллионы пар строк одинаковой длины, которые я хочу сравнить и найти позицию, в которой есть несоответствия.

Например для каждого$str1 а также$str2 мы хотим найти несоответствующую позицию с$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

Есть ли быстрый способ сделать это. В настоящее время у меня есть метод стиля C, который я зацикливаю каждую позицию в обеих строках, используя функцию substr. Но этот подход ужасно медленный.

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;
  }

}

Ответы на вопрос(9)

Ваш ответ на вопрос