2

flatbuffers::FlatBufferBuilder呼び出し後に生成された「サブ」ビルダー インスタンスを再利用できますbuilder.Clear()か? builder.Clear()サブビルダーへの影響は何ですか?

次のような flatbuffers スキーマを生成します。

table FB_mytable1{
myshort::ushort = 0;
}
table FB_table2{
nestedTable1::FB_mytable1;
nestedTable1::FB_mytable1;
}
root_type FB_table2;

builder.clear()'flatbuffers::FlatBufferBuilder' のインスタンス化を使用してビルダーをリセットすると、リセット関数を呼び出したり、インスタンス化などの個々のテーブル シリアライザーを更新したりせずに、新しいシリアル データを生成できますFB_mytable1Builder myFB_mytable1Builder(builder)か? それとも、個々のビルダー オブジェクトに、再利用されないことを意味するスコープがあることを確認する必要がありますか?

4

1 に答える 1

3

clear()構築されたばかりであるかのようにa をリセットしFlatBufferBuilder、テーブル ビルダーのインスタンスを複数のバッファーまたは複数のテーブルで再利用しないでください。

aFlatBufferBuilderは (バッファーを所有しているため) やや重い構造体であるため、可能な場合は再利用するのが理にかなっています。ただし、テーブルビルダーは非常に軽量であるため、単一のテーブルの構築に使用されるローカル変数である必要があり、それらを再利用することはできません。

于 2017-01-07T17:27:22.447 に答える