Iphone 在核心数据中执行提取请求的成本有多高?

Iphone 在核心数据中执行提取请求的成本有多高?,iphone,core-data,Iphone,Core Data,在managedObjectContext上调用executeFetchRequest的成本有多高?它是否取决于数据集的大小?这是可以经常做的事情还是应该尽量避免做的事情?这是相对昂贵的。您执行的每个获取都意味着从上下文到模型到持久存储的往返过程,持久存储本身就意味着文件访问。充其量,您的获取速度与访问存储区文件的速度一样慢。在某些情况下(特别是获取大的二进制blob),它将非常慢。小心取回 但是,请记住,获取的代价并没有触发错误那么高。您应该更担心触发错误来访问数据,而不是进行额外的获取。此外

在managedObjectContext上调用executeFetchRequest的成本有多高?它是否取决于数据集的大小?这是可以经常做的事情还是应该尽量避免做的事情?

这是相对昂贵的。您执行的每个获取都意味着从上下文到模型到持久存储的往返过程,持久存储本身就意味着文件访问。充其量,您的获取速度与访问存储区文件的速度一样慢。在某些情况下(特别是获取大的二进制blob),它将非常慢。小心取回

但是,请记住,获取的代价并没有触发错误那么高。您应该更担心触发错误来访问数据,而不是进行额外的获取。此外,执行一个或几个大回迁比运行许多小回迁要便宜得多(就像访问一个大文件比访问一百个小文件容易得多)


最好的策略是,在设计应用程序时,尝试预测需要哪些数据,然后立即或在几次大型抓取中抓取数据,并尽可能长时间地缓存数据。

与大多数情况一样,预优化从来都不是一件好事。抓取本身很少是应用程序的瓶颈,当它成为瓶颈时,它会很快显现出来

在我注意到性能问题之前,我通常不关心抓取的性能,甚至不关心错误。然后是优化的时候了

在将应用程序组装在一起并在实际硬件上通过它运行数据之前,猜测瓶颈将在哪里是相当困难的,而且通常是浪费时间的。构建、测试和观察