我想知道Boost Spirit Library 有多好。
我已经开始阅读文档了,但是它似乎是一个非常庞大的框架,并且要求很多时间成为大师。我真的不想把时间浪费在一个没有想象中那么美妙的框架上。
我想从非常了解这个框架的用户那里得到一些意见。
我想知道Boost Spirit Library 有多好。
我已经开始阅读文档了,但是它似乎是一个非常庞大的框架,并且要求很多时间成为大师。我真的不想把时间浪费在一个没有想象中那么美妙的框架上。
我想从非常了解这个框架的用户那里得到一些意见。
我的意见肯定是有偏见的,所以请持保留态度。
Spirit 是一个巨大的框架,允许使用 C++ 创建非常快速的解析器和生成器。创建的解析器和生成器与您自己的数据结构很好地集成。Spirit 需要对其基础有所了解才能有效使用。该文档可读性很强,并且用简单的术语解释了事情。实际上有数百个示例可用,我建议将其作为文档的一部分。理解这些例子是学习如何使用 Spirit 不可或缺的一部分。简单的任务很容易解决,更复杂的任务往往需要一些思考和实验才能正确解决(但这可能不是 Spirit 特有的)。Spirit 有一个活跃的社区、一个响应迅速且有用的邮件列表,以及一个包含大量附加信息的酷网站。一般来说,如果你被卡住了,它'
如果你犯了错误,你会为所有这些好处付出增加的编译时间和巨大的编译器模板错误消息。但是一旦编译,它通常可以在现场工作。
我在搜索有关 Spirit 的一些信息时遇到的老问题,但我想我会把我的 2 美分放在这里以供未来的读者阅读。
起初,我对 Spirit 的学习曲线感到非常害怕,以至于我几乎放弃了。但我很高兴我继续前进。这个解析器的性能很糟糕。我以前使用 PCRE 用一些简单的正则表达式来解析 HTTP 标头。这是一个相当简单的操作,而且 PCRE 非常快,所以我没想到会在速度上看到很大的改进(如果有的话)。
男孩让我惊讶地发现它将性能提高了 2000% 以上。使用 Spirit,我可以在 1/4 秒多一点的时间内解析 100,000 组 HTTP 标头。
更重要的是,与 PCRE 的等效代码相比,代码是如此简洁和紧凑。我最初的 80 行 PCRE gobbledygoop 函数现在是一个可爱的 14 行 Spirit 语法,以及一个 Fusion 适配器,用于将输出直接推送到我的类结构。
学习起来很困难,而且构建时间会变得很糟糕,但回报是惊人的。