2017-03-09 17 views
0

flatbuffer mutableを使用すると、パフォーマンス上の損失はどれくらいありますか?可変フラットバッファ、パフォーマンスの低下?

は、それは私が現時点では以下のクラスを持っている私の例では、編集可能である必要があり、オブジェクト/ stuctを持っているflatbuffersの「正しい」の使用(すなわちゲームの状態)

です:

class Game: 
    std::vector<Player>; 
    int frames; 

class Player: 
    std::string name; 
    int oil; 
    std::vector<Unit>; 

class Unit: 
    int id; 
    int hp 
    ... 

各ユニットのすべての情報を格納するこれらのオブジェクトのそれぞれにフラットバッファを使用することは賢明でしょうか?あるいは、変更可能なフラットバッファはパフォーマンスを低下させるでしょうか?

このジョブでフラットバッファが間違っている場合は、どのテクノロジを使用する必要がありますか?

答えて

0

FlatBuffersはスカラーの非常に効率的なインプレース変異を持っていますが、インプレースのような変異のあるものは、現在は遅くて不器用なリフレクションを必要とするため、頻繁に変更されるゲーム状態としての使用は推奨されません。

代わりに、私はFlatBufferへの/からの自動変換を提供するオブジェクトAPI(--gen-object-api)を使用することをお勧めします。また、標準のC++型で便利な突然変異を可能にします。

+0

成功への道のりには少しの負担があります。だから何らかの理由で、私が変更可能なアクセサを使用してオブジェクトを編集しても何も起こりません。値は変更/変更されません。 –

+0

戻り値を確認していますか? falseの場合、フィールドが存在しないために変更できないことを意味します(デフォルト値と等しい場合など)。ビルダーでforce_defaultsオプションを使用してFlatBufferを作成することで、これを回避できます。 – Aardappel

+0

Okですので、すべてのフィールドを最初に設定して可変にする必要がありますか? –

関連する問題