C++ 在perl和cpp之间共享数据结构

C++ 在perl和cpp之间共享数据结构,c++,perl,serialization,deserialization,C++,Perl,Serialization,Deserialization,我有一个perl脚本,它生成一个非常大的数据结构(从数组引用数组开始)。然后使用某种奇怪的自制串行化方案将其写入文本文件 文本文件中的数据作为值存储在键值存储数据库中 一个C++文件然后检索数据,并将其反序列化(HasMMAP,虽然在这个数据如何结构化方面可能是灵活的)。 我感兴趣的是,在Perl和C++之间是否有共享数据结构的好方法(类似于Perl—>Perl不为perl -> C++)。当前的方法维护起来很麻烦,可能没有最好的性能 最重要的因素是反序列化的速度,以及序列化结构的大小。有人知道

我有一个perl脚本,它生成一个非常大的数据结构(从数组引用数组开始)。然后使用某种奇怪的自制串行化方案将其写入文本文件

文本文件中的数据作为值存储在键值存储数据库中

一个C++文件然后检索数据,并将其反序列化(HasMMAP,虽然在这个数据如何结构化方面可能是灵活的)。 我感兴趣的是,在Perl和C++之间是否有共享数据结构的好方法(类似于Perl—>Perl不为perl -> C++)。当前的方法维护起来很麻烦,可能没有最好的性能


最重要的因素是反序列化的速度,以及序列化结构的大小。有人知道有什么东西可以做到这一点吗?

可存储的是转储和加载perl数据结构的一种方法。不过,我并不推荐它用于一般用途,因为它是核心的一部分,使用方便

但对于多平台(和语言)可移植性,使用标准数据表示要好得多。您选择哪一种可能与您在结构中保存的数据类型有关,但核心竞争者是:

  • -适用于数组和散列(键值)
  • -非常适合“配置文件”样式的数据(但扩展方式类似于JSON)
  • 如果必须的话,-但请记住,XML是为带有元数据的文档设计的,因此IMO不适用于它所用于的大多数应用程序
作为标准,他们有文档格式,解析器广泛可用。如果你想走这条路,实现你自己的并不难。只要确保你遵守规范,而且你很好


注意——因为XML和JSON(我认为YAML?)是递归的,所以可以将其解析为流,而不是独立的对象。(当您点击JSON中的“close方括号”或XML中的“close标记”时,会捕获、处理和丢弃)

Storable
是转储和加载perl数据结构的一种方法。不过,我并不推荐它用于一般用途,因为它是核心的一部分,使用方便

但对于多平台(和语言)可移植性,使用标准数据表示要好得多。您选择哪一种可能与您在结构中保存的数据类型有关,但核心竞争者是:

  • -适用于数组和散列(键值)
  • -非常适合“配置文件”样式的数据(但扩展方式类似于JSON)
  • 如果必须的话,-但请记住,XML是为带有元数据的文档设计的,因此IMO不适用于它所用于的大多数应用程序
作为标准,他们有文档格式,解析器广泛可用。如果你想走这条路,实现你自己的并不难。只要确保你遵守规范,而且你很好

注意——因为XML和JSON(我认为YAML?)是递归的,所以可以将其解析为流,而不是独立的对象。(当您点击JSON中的“close方括号”或XML中的“close标记”时,会捕获、处理和丢弃)

简单的工作

我喜欢perl,也喜欢C/C++。为了充分利用两者, 我写了一个github项目来解决这个问题

请参阅:

下面是一个简短的例子:

P_eval("$a=2;$a=$a**10;"); 
Int("a") ;   // a= 1024
简单的工作

我喜欢perl,也喜欢C/C++。为了充分利用两者, 我写了一个github项目来解决这个问题

请参阅:

下面是一个简短的例子:

P_eval("$a=2;$a=$a**10;"); 
Int("a") ;   // a= 1024

那么JSON呢?或者我认为协议缓冲区没有对Perl的正式支持,所以我可能会忽略这一点。对于有类似问题的人来说,这是一个很好的口号,虽然两者都有CPAN模块,但Google和MessagePack都没有宣布它们是官方的。至少乍一看是这样。不过,我会尝试一下,然后比较性能和可用性。JSON呢?或者我认为协议缓冲区没有对Perl的正式支持,所以我可能会忽略这一点。对于有类似问题的人来说,这是一个很好的口号,虽然两者都有CPAN模块,但Google和MessagePack都没有宣布它们是官方的。至少乍一看是这样。但是,我会尝试一下,然后比较性能和可用性。为指针干杯,我可以走JSON ish路线,我想为指针干杯,我可以走JSON ish路线,我想