我正在开始编写Java库来实现高性能的有限状态机.我知道那里有很多库,但是我想从头开始编写自己的库,因为几乎所有的库都构建了自动机,这些自动机被优化为一次只处理一个.
我想知道SO社区中涉及状态机设计的人员在实现像这样的高性能库时最重要/最好的设计原则是什么.
注意事项
目前关于设计的当前问题是:
应该上课State,Symbol并Transition定义?或者应该使用"隐藏的"内部结构.我个人认为使用类本会浪费大量内存,因为相同的信息可以以更加浓缩的形式存储.但是,这是否可以实现更快的转换?它是否有任何其他优点/缺点?
在内部存储数据的最佳方法是什么?使用类似的数据结构HashMap并HashSet启用分摊的常量时间查找,但是存在涉及的开销元素.这是最好的方法吗?将转换信息存储为原始(或非)数组似乎浪费了相当多的内存.特别是当库需要一次处理大量自动机时.不同数据结构的优缺点是什么?
我很感激任何意见.谢谢!