У меня есть tailq со 100k + записями этой структуры:
struct entry {
char *file_name;
FILE *file;
TAILQ_ENTRY(entry) tailq;
};
Цель состоит в том, чтобы хранить тысячи файловых указателей, чтобы приложение создавало тысячи файлов и добавляло к ним материалы.При каждом увеличении tailq у меня есть foreach:
int c;
char temp[20];
struct entry *np;
TAILQ_FOREACH(np, &tailq_head[y], tailq) {
if(strcmp(np->file_name, temp) == 0){
c = 1;
break;
}
}
, который ищет какое-то временное имя, которое уже находится в tailq, если его нет в хвосте, то добавьте id, иначе нет.
Что я могу сделать, чтобы улучшить производительность?Какую более быструю структуру я могу использовать?Должен ли я вычислять целочисленный хэш для переменной temp, которую нужно сравнить в foreach?Идеи?