C

时间:2018-03-19 12:26:22

标签: c hash hashmap c-preprocessor hashtable

我正在开发一个嵌入式系统,我的应用程序有很大的空间(即代码和文本段没有限制),但是我不允许使用大量的RAM(即保留线程数)最低限度,限制堆栈大小,避免动态内存分配,除非绝对必要)。我们还有一个供应商提供的GCC编译器,为我们做一些额外的“魔术”,无论这意味着什么(不能在NDA下共享细节)。

在我的应用程序中,我必须为长度为8到63个ASCII字符的数千个字符串提供搜索功能,并且这些字符串是从提供给我的python脚本自动生成的。 此脚本可以更改,恕不另行通知,添加/删除条目,为所有这些条目添加前缀等,因此输入数据在我的应用程序的构建之间有效地更改。我最初计划构建一个简单的运行时哈希映射通过hcreate()函数,或编写我自己的哈希表,但它将使用比我分配的程序更多的RAM。

有没有办法,创建一个“最小完美哈希”函数,这很容易实现,比方说,C,以及通过python和/或BASH命令行实用程序(即GNU coreutils),不要求我的C应用程序链接除libc.so 以外的任何内容?我正在尝试创建一个:

的哈希映射
  • 具有最小密钥宽度(即16位)。
  • 没有碰撞。
  • 可以使用shell和/或python脚本预先计算,以预生成带有字符串文字和整数哈希映射的Cheader文件。
  • 可以在运行时在简单的C应用程序中搜索,其中运行时搜索功能仅计算哈希值并搜索由我自动生成的头提供的预先计算的哈希表。

0 个答案:

没有答案