2016-03-24 11 views
0

私は非常に大きなデータ構造(配列参照の配列としての生活を始める)を生成するperlスクリプトを持っています。これは、不思議な自家製シリアル化スキームを使ってテキストファイルに書き込まれます。perlとcppの間のデータ構造の共有

テキストファイルのデータは、キー値ストアdbの値として格納されます。

C++ファイルはデータを取得し、ハッシュマップにデシリアライズします(ただし、このデータがどのように構成されているかに柔軟に対応できます)。

私が興味を持っているのは、perlとC++の間でデータ構造を共有する良い方法があるかどうかを見つけることです(Storableのようなものですが、perl-> perl-> C++ではありません)。現在の方法は維持する頭痛であり、最高のパフォーマンスを発揮することはできません。

最も重要な要因は、直列化された構造の速度と直列化された構造のサイズです。誰かがトリックをするかもしれない何かを知っていますか?

+1

?またはhttps://developers.google.com/protocol-buffers/ – PerlDuck

+0

私はプロトコルバッファがPerlの正式なサポートを持っているとは思わないので、おそらくそれは間違いです。しかし、似たような問題を抱えている人には朗報です。 – rbennett485

+0

[プロトコルバッファ](http://search.cpan.org/~saxjazman/Google-ProtocolBuffers-0.11/lib/Google/ProtocolBuffers)のCPANモジュールがあります。pm)と[MessagePack](http://search.cpan.org/~syohex/Data-MessagePack-0.49/lib/Data/MessagePack.pm)でも、GoogleもMessagePackもそれらを公式に宣言していません。少なくとも一目見て。しかし、私は試してみて、パフォーマンスと使用可能性を比較します。 – PerlDuck

答えて

3

Storableは、perlデータ構造をダンプして読み込む1つの方法です。私は実際には一般的な使用にはそれをお勧めしません - それはそれがコアの一部であり、使いやすいのは便利です。

しかし、マルチプラットフォーム(および言語)移植性のために、標準データ表現を使用する方がはるかに優れています。どちらを選択するか、おそらくあなたは構造体に保持しているデータのどのような種類の問題ですが、コア候補は以下のとおりです。

  • JSON - (キーと値)配列とハッシュのために良いです。
  • YAML - 「設定ファイル」スタイルデータのための優れた(しかし、JSONに似た方法で拡張)
  • そして、あなたがしなければならない場合は、XML - しかし、XMLドキュメント-とメタデータのための設計さであることを心に留めておいて、とIMOはそれが使用されているほとんどのアプリケーションには適していません。

標準として、文書化された書式設定があり、パーサーは広く入手可能です。それがあなたが行きたいと思っているルートであれば、自分自身を実装することはあまり難しくありません。あなたが仕様に従っていることを確認してください。

注 - XMLとJSON(と私はYAMLと思うので)は再帰的なので、スタンドアロンオブジェクトではなくストリームとして解析できます。 (トラップ、JSONの「かぎ括弧」やXMLの「閉じるタグ」を押すと処理と破棄が行われます)。

+0

ポインターをうかがって、[MessagePack](http://msgpack.org/)でJSON-ishのルートに行きます – rbennett485

-1

簡単な仕事です。

私はperlが好きで、私はC/C++も好きです。両方を最大限に活用するために、 私はこの問題を解決するためのgithubプロジェクトを作成しました。

参照してください。 https://github.com/tlqtangok/perlcpp

短い例はここにある:何JSONについて

P_eval("$a=2;$a=$a**10;"); 
Int("a") ; // a= 1024 
関連する問題