我正在开发一个由Core Data支持的应用程序.现在,当我在Context中添加或删除实体时,我正在保存对象上下文.我担心它会影响性能,所以我想延迟保存.事实上,我可以一直延迟它直到应用程序终止.仅在应用程序即将关闭时保存数据是否风险太大?我应该多久调用一次对象上下文的保存?
我想有一个单独的线程处理保存:它将等待信号量.每次应用程序的任何部分调用helper/util方法来保存Core Data时,它都会减少信号量.当它降到零时,"保存线程"将执行一次保存,并将信号量增加到a,比如5,然后再次休眠.
有什么好建议吗?谢谢!
Ale*_*lex 10
你应该经常保存.保存操作的实际性能与您正在使用的持久性存储类型有很大关系.由于二进制和XML存储是原子的,因此需要在每次保存时将它们完全重写为磁盘.随着对象图的增长,这可能会使您的应用程序变慢.另一方面,SQLite存储更容易逐步写入.因此,虽然会有一些东西写在你正在保存的对象之上和之外,但开销远远低于原子存储类型.无论整体对象图形大小如何,保存仅影响少数对象的速度总是很快.
也就是说,如果您在循环中导入数据,比方说,我会等到完成操作结束后才能保存而不是保存每次迭代.您的主要目标应该是防止数据丢失.(我发现用户并不关心这一点!)性能应该紧随其后.您可能需要做一些工作来平衡保存与性能的频率,但除非您已经确定了特定且重要的性能问题,否则您在上面概述的解决方案似乎有些过分.
| 归档时间: |
|
| 查看次数: |
2133 次 |
| 最近记录: |