Portál AbcLinuxu, 10. května 2025 02:35
Dobrý den, potřebuju poradit, jak zeefektivnit prohledávání pole.
Mám asi toto:
for my $regex (@regexeps) {
$regex = qr{$regex};
my @occurrences = grep { $_ =~ m{$regex}xms } keys %strings;
...
}
Při větším množství dat mi jde prohledávání pomalu. Existuje něco efektivnějšího? (Kód v textu je pouze příklad, jinak používám odkazy. Jsem si jistý, že je to způsobeno tím, že hash %strings obsahuje velké množství dat. Klíče musím porovnávat jako strings, protože mi jde asi o toto: ... grep { 'táta a máma' =~ m{\btáta\b}xms } ...)
Díky za pomoc!
$theregex = join '|', map { "(?:$_)"; } @regexeps;- což pravda předpokládá že s každým matchem se dělá víceméně to samé - plus si vyžádat kompilaci, tj.
$theregex = qr{$theregex}o;Samozřejmě to není testované, a pro dostatečný počet regulárních výrazů se jistě projeví nějaká systémová omezení, ale v zásadě někudy tímto směrem by to mělo jít...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.