Как сделать регулярную компиляцию Perl, чтобы сэкономить время во время выполнения? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть функция perl, как показано ниже, выполнение занимает больше времени.(Примечание: эта функция вызывается 10000+ раз.)

После некоторого поиска в Google, я обнаружил, что Если я могу предварительно скомпилировать регулярное выражение perl, тогда время выполнения может уменьшиться.

Может кто-нибудь помочь в изменении регулярных выражений Perl, чтобы это заняло меньше времени?Или любое лучшее решение?

sub some_func {
    my $var1=shift;
    my $var2=shift;

    if (!($var1 =~ /^UTF-?8$/)) {
         print "Do something important\n";
    }
    if ($var2 =~ /$some_global_string/i) {
         print "Do something important\n";
    }
}

Например, $ var2 может быть

"character string with maximum 4096 character, Including html character as string"

, а $ some_global_string может быть

"string as $var2 but max length of 256 character"`

1 Ответ

0 голосов
/ 23 октября 2018

http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators

my $RE1 = qr/^UTF-?8$/;
my $RE2 = qr/$some_global_string/i;
....
if ($var1 !~ /$RE1/) {...};
...
if ($var2 =~ /$RE2/) {...};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...