是否可以直接将带有增强性的吊舱分析

Is it possible to parse directly to nested PODs with boost-spirit?

本文关键字:增强 是否      更新时间:2023-10-16

我的任务是用网络上的文本形式来调用C API函数。有人可能会想到某种形式的RPC。这些功能被称为频繁,因此性能要求非常严格。目前,我将输入流直接用手动写解析器将输入流解析为相应的POD结构。问题是该解析器是巨大。是的,有时我会发现其中的错误。我想尝试切换以减少代码的复杂性。希望我也可以提高性能,以防我可以使用内存池。在当前的解决方案中,添加如此复杂性看起来令人生畏,考虑到所有这些都是多线程。

简化的输入数据看起来像functionName({x,x,x,{x,x,x},<null>,x}),其中每个x是某种类型或文本字符串的原始值(例如"blah"<null>)。每个缺失的结构由<null>表示。

输出数据是POD结构。如果将字符串或嵌套结构作为字段,则将分配数据的指针存储在外部。如果丢失了值,则可能是无效的。

挖掘SO答案并通过Boost文档,我找不到如何有效地完成此任务,即在将结构解析为某种内部" Boost file-form-frimellight"形式后,就不会将结构重建为POD。

再次,重复主题,问题是如何解析带有指针的嵌套的POD结构?

任何帮助都将不胜感激。

带有陈述的目标,我会考虑从boost intercess。

增强序列化

将其与EAS Portable Archives和各种标志一起使用,以避免一些开销

  • 增强向量的序列化&lt; char&gt;(链接Boost C 序列化开销以及如何使用自定义库的Boost库进行性能测试)

Boost Intervocess

如果对象图是"复杂的"(例如,可能包含一个Multi_index_container或可能使用共享对象表示以进行压缩的非pods)。这有些参与,但是使您在托管缓冲区(使用标准分配器)位序列化中所做的任何事情。

没有便携式格式:库是可移植的,但是在一个平台/版本上序列化的数据无法在其他平台/版本上读取。

参见例如

  • 共享的内存IPC同步(无锁)用于幻想应用程序
  • boost :: Intercess scoped_allocator和不共享内存中的容器的容器

许多其他人,取决于您想要实现的目标。