我有一个perl脚本,它生成一个非常大的数据结构(它以数组引用数组的形式开始)。然后使用一些奇怪的home-brew序列化方案将其写入文本文件。
来自文本文件的数据作为值存储在键值存储db中。
然后,c ++文件检索数据并对其进行反序列化(进入散列映射,尽管可能对此数据的结构方式有灵活性)。
我感兴趣的是找到在perl和c ++之间共享数据结构的好方法(类似于Storable,但这意味着perl-> perl not perl-> C ++)。目前的方法很难维护,可能没有最佳性能。
最重要的因素是反序列化的速度,以及序列化结构的大小。任何人都知道可以做到这一点的事情吗?
答案 0 :(得分:3)
Storable
是转储和加载perl数据结构的一种方法。我实际上并不推荐它用于一般用途 - 它很方便,因为它是核心的一部分,易于使用。
但是对于多平台(和语言)可移植性,使用标准数据表示要好得多。您选择的可能是您在结构中持有的数据类型,但核心竞争者是:
作为标准,他们已经记录了格式化,并且解析器可以广泛使用。如果这是您想要的路线,那么实施您自己的并不是太难。只要确保你遵守规范,你就会很好。
注意 - 因为XML和JSON(我认为YAML?)是递归的,所以您可以解析为流,而不是独立的对象。 (当您在JSON中点击“关闭括号”或在XML中点击“关闭标记”时,陷阱,处理和丢弃)。
答案 1 :(得分:-1)
我喜欢perl,我也喜欢C / C ++。要充分利用两者, 我写了一个github项目来解决这个问题。
请看: https://github.com/tlqtangok/perlcpp
这里有一个简短的例子:
P_eval("$a=2;$a=$a**10;");
Int("a") ; // a= 1024