在managedObjectContext上调用executeFetchRequest有多贵?它取决于数据集大小吗?这是可以经常做的还是应该尽可能避免的事情?
答案 0 :(得分:6)
与大多数事情一样,预优化从来都不是一件好事。提取自身很少是应用程序的瓶颈,而且很快就会显现出来。
在我注意到性能问题之前,我通常不关心提取的性能,甚至是故障。然后是优化的时候了。
在将应用程序放在一起并在实际硬件上通过它运行数据之前,猜测瓶颈将会是多么困难,而且通常是浪费时间。建立,测试和观察。
答案 1 :(得分:5)
它相对昂贵。您执行的每次提取都意味着从上下文到模型到持久性存储的往返行程,持久性存储本身意味着文件访问。充其量,您的提取将与访问商店文件一样慢。在某些情况下(特别是获取大型二进制BLOB),它会慢得多。小心提取。
但是,请记住,提取并不像解决故障那样昂贵。您应该更多地担心触发数据访问数据而不是进行额外的提取。此外,执行一个或几个大型提取比运行许多小型提取要便宜得多(就像访问一个大文件比访问一百个小文件更容易)。
最好的策略是尝试预测在设计应用时需要哪些数据,然后立即获取数据或在几次大型提取中,并尽可能长时间缓存。