繁体   English   中英

在Perl和CPP之间共享数据结构

[英]Sharing data structures between perl and cpp

我有一个perl脚本,它会生成一个非常大的数据结构(它开始时是数组引用的数组)。 然后使用一些奇怪的自制序列化方案将其写入文本文件。

来自文本文件的数据作为值存储在键值存储db中。

然后,一个c ++文件检索该数据,并将其反序列化(生成一个哈希表,尽管可以灵活地构造该数据)。

我感兴趣的是,找到是否有在perl和c ++之间共享数据结构的好方法(类似于Storable ,但这是为了perl-> perl而不是perl-> c ++)。 当前的方法令人头疼,并且可能无法获得最佳性能。

最重要的因素是反序列化的速度以及该序列化结构的大小。 有人知道可以解决这个问题的方法吗?

Storable是转储和加载perl数据结构的一种方法。 不过,我实际上并不推荐将其用于一般用途-方便使用,因为它是核心且易于使用。

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

  • JSON-适用于数组和哈希(键值)。
  • YAML-非常适合“配置文件”样式数据(但以类似于JSON的方式扩展)
  • 而且,如果需要的话,可以使用XML-但请记住,XML是为带有元数据的文档设计的,因此IMO不适合用于它的大多数应用程序。

作为标准,它们具有记录的格式,并且解析器广泛可用。 如果那是您要走的路,那么实现自己的目标并不难。 只需确保您遵循规范并保持良好状态即可。

注意-因为XML和JSON(我认为是YAML?)是递归的,所以可以将其解析为流,而不是独立的对象。 (当您点击JSON中的“右括号”或XML中的“关闭标签”时,请进行捕获,处理和丢弃)。

简单的工作。

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

请参阅: https : //github.com/tlqtangok/perlcpp

一个简短的例子在这里:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM