在perl和cpp之间共享数据结构
Sharing data structures between perl and cpp
我有一个perl脚本,它生成一个非常大的数据结构(它以数组引用的数组开始)。然后使用一些奇怪的自制串行化方案将其写入一个文本文件。
文本文件中的数据作为值存储在键值存储数据库中。
然后,一个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
相关文章:
- 在c代码之间共享数据的最佳方式
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 初始化可变数据结构中的共享指针向量
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- 使用Hazelcast替换共享内存结构数据
- 我应该如何共享数据结构
- 如何将比较和交换用于任何共享数据结构的免等待互斥
- 在perl和cpp之间共享数据结构
- CUDA:结构体的共享数据成员和对该结构体的引用成员具有不同的地址和值
- 在 OpenMP 中使用共享数据结构而不是私有数据结构时的性能差异
- 共享指针递归地删除递归数据结构,堆栈溢出
- C++在MPI进程之间共享大型数组和数据结构
- 在不频繁更新的大型共享数据结构上预测计算潜在需要的值
- C++-具有结构共享/不变性的类映射数据结构