gpt4 book ai didi

c++ - “寻找”优化

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:32:15 31 4
gpt4 key购买 nike

'find ./ -name *.jpg'

我正在尝试优化上述语句的“查找”命令。

在查找实现中处理“-name”谓词的方法。


static boolean

pred__name __common (const char *pathname, const char *str, int flags)

{

boolean b;

char *base = base_name (pathname);

strip__trailing __slashes(base);

b = fnmatch (str, base, flags) == 0;

free (base);

return b;

}

因为我正在寻找文件扩展名并希望避免基于正则表达式的字符串匹配,所以我替换了 'b = fnmatch (str, base, flags) == 0;'带有以下语句

int strLen = strlen(base);

b = FNM_NOMATCH;

if (strLen>=4 && (str[3] == base[strLen]) &&
(str[2] == base[strLen -1]) && (str[1] ==
base[strLen-2]) && (str[0] == base[strLen-3]))

{

b = 0;

}

在此之后,我预计会有一些性能提升,但在进行上述更改后我没有看到任何性能提升。

  1. 是我做错了什么吗?
  2. 是否有更好的方法来优化“查找”以仅搜索文件扩展名?

最佳答案

我怀疑正则表达式匹配是瓶颈。由于 find 遍历文件系统,因此开销可能是磁盘寻道时间,如果是内存文件系统,则是系统调用和由此产生的上下文切换。

关于c++ - “寻找”优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1913501/

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