'find ./ -name *.jpg'
Я пытаюсь оптимизировать команду 'find' для приведенного выше оператора.
метод, который обрабатывает предикат '-name' в реализации find.
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;
}
После этого я ожидал некоторого увеличения производительности, но я не вижу какого-либо увеличения производительности после вышеуказанного изменения.
- Это я что-то не так делаю?
- Есть ли лучший способ оптимизировать поиск для поиска только по расширениям файлов?