我目前正致力于particle simulator的命令行界面。它的解析器采用以下格式读取输入:
[command] [argument] *( - [flag] [flag argument] )
目前,与各种已知命令相比,该命令通过条件块发送,并且其相应的数据包被发送到匹配功能。然而,这看起来很笨拙,低效且不优雅。
我正在考虑使用hashmap,使用命令的字符串表示作为键,使用函数指针作为值。然后,引用的函数将被发送一个包含参数,标志等的数据包。
在这种情况下哈希映射是否过度?实施一个所需的额外基础设施是否超过了潜在的好处?我的目标是速度,优雅,功能,因为这是一个开源项目,可扩展性。
感谢您的帮助。
答案 0 :(得分:1)
您可能需要考虑Ternary Search Tree。它具有良好的性能,有效的存储使用;并且您不需要哈希函数或冲突策略。
链接的Bentley / Sedgwick文章对随附的C源代码进行了非常透彻但可读的解释。
我一直在使用TST在我的postscript解释器的过去3个版本中进行名称查找。所需的唯一变化是由于内存管理的变化。 Here's a version我修改(轻轻地)使用显式指针。我在我的postscript interpreter中使用了另一个版本,任何xpost2 * .zip版本,在core.c文件中,它使用指针的字节偏移量(必须添加到用户内存字节指针到产生一个真正的指针)。
答案 1 :(得分:0)
获得的速度可能很小,但你可以散列命令将其转换为数字,然后使用switch语句。比哈希映射更快。