簡體   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