是否可以直接将带有增强性的吊舱分析
Is it possible to parse directly to nested PODs with boost-spirit?
我的任务是用网络上的文本形式来调用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和不共享内存中的容器的容器
许多其他人,取决于您想要实现的目标。
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 无法将结构注册为增强几何体3D点
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 是否可以从int转换为enum类类型
- 无论条件是否为true,if总是在c++中执行
- 如何找到大小'x'数组是否完全填充,在C++?
- 检查值是否在集合p1和p2中,但不在p3中
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 是否可以直接将带有增强性的吊舱分析
- 使用增强几何体检查两条线是否有交点
- c++11 信号是否等同于增强信号
- 增强特性以检查对象是否为STL容器
- c++ 0x中是否包含完整的增强功能?
- 查找字符串是否包含c++中的字符(允许增强)