首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“查找”优化

“查找”优化
EN

Stack Overflow用户
提问于 2009-12-16 09:44:25
回答 1查看 157关注 0票数 1
代码语言:javascript
复制
'find ./ -name *.jpg'

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

方法,该方法处理find实现中的“-name”谓词。

代码语言:javascript
复制
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,== 0;‘)

代码语言:javascript
复制
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. 是否有更好的方法来优化“查找”,只搜索文件扩展名?
EN

回答 1

Stack Overflow用户

发布于 2009-12-16 09:47:09

我怀疑正则表达式匹配是否是瓶颈。由于find遍历文件系统,开销可能在磁盘查找时间内,如果是内存中的文件系统,则在系统调用和结果上下文切换中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1913501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档