2

私はすでにテキストファイルに保存しようとしました(明らかに、Excelのようにテーブルを保持するようにカスタマイズされていないため、より多くのスペースが必要です). また、シリアル化されたデータを保持しようとしました(c#、参考までに)。どちらの場合もメリットはありませんでした。

4

1 に答える 1

5

ほとんどの「表形式」のデータはテキストであるため、保存する前にこれを圧縮することで大きなメリットが得られます(例としてGZipとBsonWriterを使用)。

public static byte[] Compress(object entity)
{
  using (var stream = new MemoryStream())
  {
    using (var zipStream = new GZipStream(stream, CompressionLevel.Optimal))
    {
      using (var writer = new BsonWriter(zipStream))
      {
        var serializer = new JsonSerializer();
        serializer.Serialize(writer, entity);
      }
    }

    return stream.ToArray();
  }
}

** アップデート **

Protobufは、シリアル化されたエンティティのサイズと速度の点で、XmlSerializerBinaryFormatterの両方よりもはるかに優れています。圧縮する前に、これを使用してエンティティをシリアル化してみてください。

public static byte[] Compress(object entity)
{
  using (var stream = new MemoryStream())
  {
    using (var zipStream = new GZipStream(stream, CompressionLevel.Optimal))
    {
      Serializer.Serialize(stream, entity);  
    }

    return stream.ToArray();
  }
}
于 2012-10-11T13:06:53.860 に答える