正確な構造を知っているデータがいくつかあります。秒ごとにファイルに挿入する必要があります。構造体には double のフィールドが含まれていますが、名前が異なります。毎秒同じ数の構造体をファイルに書き込む必要があります
事は..データの読み取りに関しては、どちらがより良いアプローチですか
1-構造体をバイトに変換し、秒の終わりを示すバイトにインデックスを付けながら挿入します
2- CSV データを書き込み、秒の終わりを示すバイトにインデックスを付ける
データは、ファイルからランダムに要求されます。したがって、どちらの場合も、FileStream の位置を秒のバイトに設定します。
最初のケースでは、その秒の各構造体に対して次を使用して、データ全体を取得します
_filestream.Read(buffer, 0, buffer.Length);
GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
oReturn = (object)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), _oType);
毎秒約 100 の構造体があるため、前のアプローチは X 回適用されます。
2 番目のケースでは、string.Split(',') を使用し、データの正確な順序がわかっているので、それに応じてデータを入力します。
file.Read(buffer, 0, buffer.Length);
string val = System.Text.ASCIIEncoding.ASCII.GetString(buffer);
string[] row = val.Split(',');
プロファイラーを使用した編集 は違いを示していませんが、ファイルサイズが非常に大きくなる可能性があるため、実際のシナリオを正確にシミュレートすることはできません. 今のところ理論的な情報を探しています