C中小型数据集哈希映射的替代方法

C中小型数据集哈希映射的替代方法,c,performance,hashmap,C,Performance,Hashmap,我目前正在为一个应用程序开发命令行界面。其解析器以以下格式读取输入: [命令][参数]*([标志][标志参数]) 目前,与各种已知命令相比,命令通过条件块发送,其相应的数据包被发送到匹配函数。然而,这似乎笨重、低效且不雅观 我正在考虑改用hashmap,用命令的字符串表示作为键,函数指针作为值。然后,引用的函数将被发送一个包含参数、标志等的数据包 在这种情况下,散列映射是否有过大的杀伤力?实施一个项目所需的额外基础设施是否超过了潜在的好处?我的目标是速度、优雅、功能,而且,因为这是一个开源项目,

我目前正在为一个应用程序开发命令行界面。其解析器以以下格式读取输入:

[命令][参数]*([标志][标志参数])

目前,与各种已知命令相比,命令通过条件块发送,其相应的数据包被发送到匹配函数。然而,这似乎笨重、低效且不雅观

我正在考虑改用hashmap,用命令的字符串表示作为键,函数指针作为值。然后,引用的函数将被发送一个包含参数、标志等的数据包

在这种情况下,散列映射是否有过大的杀伤力?实施一个项目所需的额外基础设施是否超过了潜在的好处?我的目标是速度、优雅、功能,而且,因为这是一个开源项目,所以需要扩展性


感谢您的帮助。

获得的速度可能很低,但您可以对命令进行哈希运算,将其转换为数字,然后使用switch语句。比哈希映射更快。

获得的速度可能很小,但您可以对命令进行哈希运算,将其转换为数字,然后使用switch语句。比哈希图快。

你可能想考虑一下。性能好,存储利用率高;您不需要散列函数或冲突策略

链接的Bentley/Sedgwick文章是对附带的C源代码的一个非常透彻但可读的解释


在过去3个版本的postscript解释器中,我一直在使用TST进行名称查找。唯一需要的更改是由于内存管理的更改。我(轻轻地)修改为使用显式指针。我在我的中使用了另一个版本,即文件core.c中的任何xpost2*.zip版本,它使用字节偏移量作为指针(必须添加到用户内存字节指针中才能生成真正的指针) 链接的Bentley/Sedgwick文章是对附带的C源代码的一个非常透彻但可读的解释


在过去3个版本的postscript解释器中,我一直在使用TST进行名称查找。唯一需要的更改是由于内存管理的更改。我(轻轻地)修改为使用显式指针。我在我的中使用了另一个版本,即文件core.c中的任何xpost2*.zip版本,它使用字节偏移量作为指针(必须添加到用户内存字节指针中才能生成真正的指针)

也许一个有序映射就足够了,因为您可能不会有数百万个案例,也不会在一个紧密的循环中调用解析器。但是,由于这两个参数都不是很容易编写的,所以可能选择了编译器已经提供的结构。我认为您必须记住,参数只在启动时计算,您没有机会使其成为速度的瓶颈。hashmap似乎是一个足够优雅的解决方案……也许一个有序的映射就足够了,因为您可能不会有数百万个案例或在一个紧密的循环中调用解析器。但是,由于这两个参数都不是很容易编写的,所以可能选择了编译器已经提供的结构。我认为您必须记住,参数只在启动时计算,您没有机会使其成为速度的瓶颈。hashmap似乎是一个足够优雅的解决方案。。。