Es hängt wirklich davon ab, was genau Sie mit Ihren Daten machen - aber hey, mit Ihrer letzten Frage sind Sie auf dem richtigen Weg! Raten Sie nicht, sondern messen Sie.
Perl bietet die Benchmark Modul für genau diese Art von Dingen, und die Verwendung ist wirklich ziemlich einfach. Hier ist ein kleines Codebeispiel für den Anfang:
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw(cmpthese);
my $dna;
$dna .= [qw(G A T C)]->[rand 4] for 1 .. 100;
sub frequency_substr {
my $length = length $dna;
my %hist;
for my $pos (0 .. $length) {
$hist{$pos}{substr $dna, $pos, 1} ++;
}
\%hist;
}
sub frequency_split {
my %hist;
my $pos = 0;
for my $char (split //, $dna) {
$hist{$pos ++}{$char} ++;
}
\%hist;
}
sub frequency_regmatch {
my %hist;
while ($dna =~ /(.)/g) {
$hist{pos($dna)}{$1} ++;
}
\%hist;
}
cmpthese(-5, # Run each for at least 5 seconds
{
substr => \&frequency_substr,
split => \&frequency_split,
regex => \&frequency_regmatch
}
);
Und ein Beispielergebnis:
Rate regex split substr
regex 6254/s -- -26% -32%
split 8421/s 35% -- -9%
substr 9240/s 48% 10% --
Es stellt sich heraus, dass substr überraschend schnell ist :)