我正在开发一个读取大文本文件的应用程序(最大可达5GB)。目前,我使用fscanf读取文件,因为我发现它是目前为止最快的。但是,读取整个文件仍需要相当长的时间。
是否有更快的方式从文件中读取数据?
答案 0 :(得分:2)
首先,您应该强烈避免将5GB文件作为一个步骤读入内存。单独记忆的影响应该让你远离这种方法。相反,您应该尝试采用另一种方法,例如:
NSFileWrapper
映射文件(远离灵丹妙药,但可以与上述内容结合使用; NSFileWrapper
自动执行内存映射)首先应该获得性能基准:
time cat thebigfile.dat > /dev/null
很难想象读取文件的速度要快得多,所以这就是你的理由。
你绝对应该在仪器中进行一些性能分析,并确保问题是阅读而不是处理。特别是,内存分配可能比您预期的更昂贵,尤其是在多线程应用程序中。
一旦您对上述内容进行了调查,您仍需要快速管理磁盘数据,请查看dispatch_io和dispatch_data。这是一个非常棒的高速数据管理工具。但在担心这种优化之前,最好先改进基本算法。