每次应用程序执行与I/O相关的任务(如写入文件数据)时,都会使系统脱离空闲状态。通过减少数据写入、聚合写入、明智地使用缓存、安排网络事务和最小化总体I/O,您可以提高应用程序的能效和性能
优化文件访问
以下是优化应用程序中文件访问的一些准则:
- 最小化数据写入。只在文件内容发生更改时写入文件,并尽可能将更改聚合为单个写入。如果只有几个字节发生了更改,请避免写出整个文件。如果经常更改大文件的小部分,请考虑使用数据库来存储数据。
- 避免频繁访问内存。如果应用程序保存状态信息,则仅当该状态信息更改时才进行保存。尽可能地进行批量更改,以避免频繁地写入小更改。
尽可能按顺序读写数据。在一个文件中跳跃需要额外的时间来寻找新的位置。- 尽可能从文件中读写更大的数据块,记住一次读太多数据可能会导致其他问题。例如,读取32MB文件的全部内容可能会在操作完成之前触发这些内容的分页。
- 要读取或写入大量数据,请考虑使用dispatch_io,它提供了一个基于GCD的异步API来执行文件I/O。使用dispatch_io可以在较高的级别上指定您的数据需求,以便系统可以优化您的访问。请参阅Grand Central Dispatch(GCD)参考。
- 如果数据由随机访问的结构化内容组成,请将其存储在数据库中,并使用SQLite或核心数据访问它。如果要处理的数据量可能会增长到超过几兆字节,那么使用数据库就特别重要。请参阅SQLite软件库和核心数据编程指南。
- 了解系统如何缓存文件数据,并知道如何优化这些缓存的使用。除非计划多次引用数据,否则请避免自己缓存数据。请参阅《文件系统编程指南》中的系统具有自己的文件缓存机制。
有关如何识别和修复与文件相关的性能问题的信息,请参阅 Performance Tips 中 File System Programming Guide.
。