相关疑难解决方法(0)

使用Perl 6中的另一个数组的元素过滤数组的元素

我想过滤以以下元素@array开头的元素@search:

my @array = "aaaaa" .. "fffff";
my @search = "aaaa" .. "cccc";
.put for @array .grep: /^ @search /;
Run Code Online (Sandbox Code Playgroud)

问题是需要19秒.所以,我"预编译"regexgrep,整个程序是这样的:

my @array = "aaaaa" .. "fffff";
my @search = "aaaa" .. "cccc";

my $search = "/@search.join('|')/".EVAL;

.put for @array .grep: * ~~ /^ <$search> /;
Run Code Online (Sandbox Code Playgroud)

现在需要0.444秒.

问题:是否有内置的Perl 6方法来做这些事情?像插入junction一个regex......

perl6 raku

6
推荐指数
1
解决办法
386
查看次数

Perl 6中的正则表达速度

我以前只工作bash正则表达式grep,sed,awk等努力后,Perl 6 regexes我有一个印象,即他们的工作慢于我所期望的,但可能的原因是,我处理这些错误.我做了一个简单的测试,以比较类似的操作Perl 6bash.这是Perl 6代码:

my @array = "aaaaa" .. "fffff";
say +@array; # 7776 = 6 ** 5

my @search = <abcde cdeff fabcd>;

my token search {
    @search
}

my @new_array = @array.grep({/ <search> /});
say @new_array;
Run Code Online (Sandbox Code Playgroud)

然后我印刷@array到一个命名的文件array(具有7776线),由指定的文件search具有3条线(abcde,cdeff,fabcd),并提出了简单的grep搜索.

$ grep -f search array
Run Code Online (Sandbox Code Playgroud)

在两个程序产生与预期相同的结果后,我测量了他们工作的时间.

$ time perl6 search.p6 …
Run Code Online (Sandbox Code Playgroud)

perl6

5
推荐指数
1
解决办法
344
查看次数

标签 统计

perl6 ×2

raku ×1