지금 당장 나타나는이 프로그램은 .fasta 파일 (유전자 코드가 포함 된 파일)을 가져 와서 데이터로 해시 테이블을 만들고 인쇄하지만, 그것은 아주 느립니다. 문자열을 분할하여 파일의 다른 모든 문자와 비교합니다.펄에서 패턴 인식 속도를 높이려면 어떻게합니까?
use strict;
use warnings;
use Data::Dumper;
my $total = $#ARGV + 1;
my $row;
my $compare;
my %hash;
my $unique = 0;
open(my $f1, '<:encoding(UTF-8)', $ARGV[0]) or die "Could not open file '$ARGV[0]' $!\n";
my $discard = <$f1>;
while ($row = <$f1>) {
chomp $row;
$compare .= $row;
}
my $size = length($compare);
close $f1;
for (my $i = 0; $i < $size - 6; $i++) {
my $vs = (substr($compare, $i, 5));
for (my $j = 0; $j < $size - 6; $j++) {
foreach my $value (substr($compare, $j, 5)) {
if ($value eq $vs) {
if (exists $hash{$value}) {
$hash{$value} += 1;
} else {
$hash{$value} = 1;
}
}
}
}
}
foreach my $val (values %hash) {
if ($val == 1) {
$unique++;
}
}
my $OUTFILE;
open $OUTFILE, ">output.txt" or die "Error opening output.txt: $!\n";
print {$OUTFILE} "Number of unique keys: " . $unique . "\n";
print {$OUTFILE} Dumper(\%hash);
close $OUTFILE;
미리 도움 주셔서 감사합니다.
아마도 http://www.bioperl.org/wiki/Main_Page에는 최적화 된 솔루션이 있습니다. – toolic
샘플 입력 파일이 있습니까? 시간이 오래 걸리는 작업을 해결하기 위해 타이밍 진술을 인쇄 해 보았습니까? –
당신은 또한 당신이 스크립트에서 무엇을하려고하는지 정확하게 설명 할 수 있습니까?스크립트가 실제로 수행해야하는 작업을 확신 할 수 없을 때 최적화하기가 어렵습니다! 감사. –