Вот моя работа: https://codepen.io/anon/pen/ZVNpQE
Я смог это исправить, добавив (см. Ниже) к вашему значку:
float: left
В современной реализации Perl код regexp должен быть настолько же быстрым как в grep, но если Вы обеспокоены производительностью, почему Вы просто не испытываете его? С точки зрения чистоты и устойчивости кода, называя внешний инструмент командной строки определенно не хорошо.
Это зависит.
Я сказал бы, чтобы сделать это в Perl, если производительность не вынуждает Вас оптимизировать.
Одна вещь остерегаться с grep: В недавних дистрибутивах Linux, если Ваша переменная среды ЛЕНГА определяет тип UTF-8 (например, моя LANG=en_GB.UTF-8), затем grep, sed, вид и вероятно набор других относящихся к обработке текстов утилит, выполняемых приблизительно в 10 раз более медленно. Поэтому не упустите это при выполнении сравнений производительности. Я искажаю свою команду grep теперь к:
LANG= LANGUAGE= /bin/grep
Править: На самом деле это больше похоже в 100 раз более медленно
Вы не должны open
файл явно.
my $regex = qr/blah/;
while (<>) {
if (/$regex/) {
print;
exit;
}
}
print "Not found\n";
Так как Вы кажетесь соответствующими о производительности, я позволяю соответствию и print
используйте значение по умолчанию $_
если, не присваиваясь <>
к чему-либо, которое незначительно быстрее. В нормальном производственном коде,
while (my $line = <>) {
if ($line =~ /$regex/) {
print $line;
exit;
}
}
был бы предпочтен.
Править: Это предполагает, что файл для проверки дан на командной строке, которая я просто заметил, что Вы не заявили, применяется в Вашем случае.
Это зависит. Если Вы хотите оптимизировать в течение времени разработки,
$line = `grep '$regex' file | head -n 1`;
ясно нужно.
Но это прибывает за счет необходимости запустить внешние процессы, в зависимости от вещей помимо жемчуга, устанавливаемого, и теряющий возможность сделать подробное сообщение об ошибке, когда что-то идет не так, как надо.
Я однажды сделал сценарий для поиска некоторых регулярных выражений через некоторые большие текстовые файлы (приблизительно 10 МБ каждый). Я сделал это с Perl regexes и заметил, что это вполне не торопилось. Таким образом, я пытался выполнить grep из сценария, и повышение скорости было завершено значительное. Так, в моем собственном опыте Perl встроенные regexes медленнее, чем grep. Но Вы, вероятно, только заметите его с большими файлами. Мой совет: попробуйте его оба пути и посмотрите, как это идет.