首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从文本文件中读取多行

从文本文件中读取多行
EN

Stack Overflow用户
提问于 2013-11-12 09:59:15
回答 1查看 204关注 0票数 0

我需要读取一个进程大文本文件。目前,我一次读一行,并同步处理。我需要提高性能,并意识到磁盘访问是一个瓶颈。我希望重构一个磁盘读取线程,将数据放在等待处理的队列上,多个线程执行处理。我担心的是,通过一次只读取一行,我可能无法足够快地将数据提供给处理线程。是否有办法每次读取多行?我需要确保我没有打破任何文字,因为处理是基于文字。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-12 14:33:49

当您的程序一次读取一行时,运行时库从文件中读取大量数据块,然后从内存缓冲区解析行。因此,当您读取文件的第一行时,真正发生的情况是运行时库加载一个大型缓冲区,扫描它以找到第一行的末尾,并将该行返回给您。下一次请求行时,运行库不必读取,而只需找到下一行的末尾。

缓冲区的大小取决于运行时库,也可能取决于初始化文件的方式。

此外,文件系统可能维护一个更大的缓冲区。例如,您的运行时库可能有一个4 in的文件缓冲区,而操作系统可能在64 in块中缓冲输入文件。

简而言之,您可能不需要做任何特殊的事情来优化文本文件的读取。您也许可以指定一个更大的文件缓冲区,在某些情况下,我已经看到了这种帮助。除此之外,这不值得担心。

除非您有一个特别快的磁盘子系统,否则典型的开发人员机器将保持每秒50到100兆字节,如果您是逐行读取的话。在大多数文本处理应用程序中,这将是限制您的因素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19926056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档