gpt4 book ai didi

perl - 排序是否有助于 Perl 中 grep 的效率

转载 作者:行者123 更新时间:2023-12-02 05:19:16 25 4
gpt4 key购买 nike

我正在寻找有关 Perl 的 grep 函数如何工作的一些细节。我正在这样做:

if ( grep{ $foo == $_ } @bar ) {
some code;
}

假设@bar很大(数十万个元素)。根据我的数据,如果我对 @bar 进行排序,则 $foo 的值更有可能出现在数组开头附近而不是末尾附近。我想知道这是否有助于提高性能。

换句话来说,对于上面的代码,grep 是否按顺序移动通过 @bar 检查是否 $foo == $_ 然后立即一旦发现任何值是真的就退出吗?或者它会在返回值之前检查 @bar 的每个元素吗?

最佳答案

grep 不会短路,因此元素的顺序并不重要。

虽然 List::MoreUtils 的 first 会短路,但在调用之前必须将整个列表放入堆栈中。

这将是最好的:

for (@bar) {
if ($foo == $_) {
some code;
last;
}
}

更新:我最初迭代索引,因为它使用 O(1) 内存,但 for (@bar) 也是如此(与 for 相反) (LIST) 一般来说)正如 ysth 提醒我的那样。

关于perl - 排序是否有助于 Perl 中 grep 的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com