我正在尝试为我正在从事的项目学习 ragel。我是新来的。
我有一个 15 个字符串的列表。问题是检查给定的字符串是否与这 15 个字符串中的任何一个匹配。
在正常情况下,用 15 个字符串构建一个哈希集就足以对字符串进行 O(1) 查找并判断它是否匹配。
就我而言,我将这样做十亿次。所以我正在尝试使用 ragel 为这 15 个字符串构建一个状态机,并检查给定的字符串是否匹配。
我觉得使用 ragel 方法更好,因为在这两种情况下,我都必须一个一个地浏览角色。即,为了计算哈希值,我们需要扫描所有字符一次,然后进行查找。使用状态机扫描所有字符一次会给出结果并避免进行查找。
这是更好的方法吗?任何人都可以告诉我如何为 15 个字符串构建状态机来进行字符串匹配吗?