2

正確な構造を知っているデータがいくつかあります。秒ごとにファイルに挿入する必要があります。構造体には 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(',');

プロファイラーを使用した編集 は違いを示していませんが、ファイルサイズが非常に大きくなる可能性があるため、実際のシナリオを正確にシミュレートすることはできません. 今のところ理論的な情報を探しています

4

0 に答える 0