我的应用程序跟踪大约1000个对象的状态.这些对象以无特定顺序从持久存储(序列化)读取和写入.
现在,应用程序使用注册表来存储每个对象的状态.这很好,因为:
>很简单
>它非常快
>可以读取/写入单个对象的状态,而无需读取更大的实体(例如从大型XML文件中提取片段)
>有一个像样的编辑器(RegEdit),可以轻松操作单个项目
话虽如此,我想知道是否有更好的方法. sqlite似乎是一种可能性,但是您没有使用注册表获得的同一级别的多读者/多作者,并且没有简单的方法来编辑现有条目.
有更好的建议吗?一堆平面文件?
解决方法:
如果您开始尝试使用sqlite,您应该知道“开箱即用”它可能看起来不像您想要的那么快,但通过应用一些已建立的优化提示可以快速加快速度:
根据数据的大小和可用的RAM量,通过将sqlite设置为使用全内存数据库而不是写入磁盘,可以获得最佳性能提升之一.
对于内存数据库,将NULL作为文件名参数传递给sqlite3_open和make sure that TEMP_STORE is defined appropriately
另一方面,如果你告诉sqlite使用硬盘,那么你将获得与当前RegEdit使用相似的好处来“动态”操作程序的数据.
使用sqlite模拟当前RegEdit技术的方法是使用sqlite命令行工具连接到磁盘数据库.您可以在主程序运行时(和/或在中断模式下暂停时)从命令行对sql数据运行UPDATE语句.