'find ./ -name *.jpg'我正试图优化上述语句的“查找”命令。
方法,该方法处理find实现中的“-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,== 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;
} 在此之后,我期待一些性能的提高,但我没有看到任何形式的性能增益后,上述变化。
发布于 2009-12-16 09:47:09
我怀疑正则表达式匹配是否是瓶颈。由于find遍历文件系统,开销可能在磁盘查找时间内,如果是内存中的文件系统,则在系统调用和结果上下文切换中。
https://stackoverflow.com/questions/1913501
复制相似问题