我正在开发一个嵌入式系统,我的应用程序有很大的空间(即代码和文本段没有限制),但是我不允许使用大量的RAM(即保留线程数)最低限度,限制堆栈大小,避免动态内存分配,除非绝对必要)。我们还有一个供应商提供的GCC编译器,为我们做一些额外的“魔术”,无论这意味着什么(不能在NDA下共享细节)。
在我的应用程序中,我必须为长度为8到63个ASCII字符的数千个字符串提供搜索功能,并且这些字符串是从提供给我的python脚本自动生成的。 此脚本可以更改,恕不另行通知,添加/删除条目,为所有这些条目添加前缀等,因此输入数据在我的应用程序的构建之间有效地更改。我最初计划构建一个简单的运行时哈希映射通过hcreate()
函数,或编写我自己的哈希表,但它将使用比我分配的程序更多的RAM。
有没有办法,创建一个“最小完美哈希”函数,这很容易实现,比方说,C,以及通过python和/或BASH命令行实用程序(即GNU coreutils),不要求我的C应用程序链接除libc.so
以外的任何内容?我正在尝试创建一个: