在文件中存储大量数据.什么是最高性能的选择?

Jam*_*mes 7 c# serialization

目前正在进行XML序列化,但速度非常慢.寻找一种从文件中快速保存/加载信息的方法并不真正对它在光盘上的外观感兴趣(如果有什么我希望它被模糊,因为我不想手动编辑).

考虑二进制格式但是我不确定它是否能够序列化可能是自定义类型的属性等.

有任何想法吗?

Ami*_*shk 7

您可以尝试使用Sqlite.它非常快,并且将为您提供对文件进行SQL查询的完整数据库实现.

如果您正在考虑尝试二进制格式,我建议您先尝试一下.

并且可以与ORM一起使用,并且可以进行压缩和加密.

  • 这是一个单独的dll,你可以将它与你的应用程序捆绑在一起 (2认同)

Mar*_*ell 6

究竟是什么数据?

使用xml,显而易见的答案是使用smoething GZipStream来压缩它 - 使其变得更小和模糊.您可以使用,BinaryFormatter它很脆弱,IMO不适合长期存储.我会说"协议缓冲区",(也许是protobuf-net),但它取决于"自定义数据"是什么.但是如果你现在正在使用的话XmlSerializer,protobuf-net可能会没有变化的情况下工作(可能会添加一些属性) - 并且它(在每种情况下我都看到过它)都比它更小更快BinaryFormatter.

这是陡峭的学习曲线(另请参阅:入门):

[ProtoContract]
public class Person {
    [ProtoMember(1)]
    public int Id {get;set;}

    [ProtoMember(2)]
    public string Name {get;set;}

    //...
}
Run Code Online (Sandbox Code Playgroud)

公平地说,如果你使用继承,它会变得有点棘手 - 虽然不多.在许多情况下,您实际上可以使用现有属性 - 如果包含显式元素顺序,它将与xml/wcf属性一起使用.