gpt4 book ai didi

用于性能问题的 C tailq 队列替换

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:46 26 4
gpt4 key购买 nike

我有一个包含此结构的 100k+ 条目的 tailq:

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,否则不添加。

我可以做些什么来提高性能?我可以使用哪种更快的结构?我应该计算要在 foreach 中比较的临时变量的整数哈希值吗?想法?

最佳答案

在每个条目中保留名称的整数散列将大大加快比较速度。它还将节省一级指针间接寻址。但是您仍在与每个条目进行比较。如果您将条目存储在提供高效搜索的结构中,而无需与每个条目进行比较,例如哈希表,则性能优势会更大。

关于用于性能问题的 C tailq 队列替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319630/

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