mle*_*boy 6 c file processing-efficiency
我想在C中开发一个应用程序,我需要从磁盘上的文件中逐字检查.我被告知,从文件中读取一行然后将其拆分为单词会更有效,因为需要更少的文件访问.这是真的吗?
如果你知道你将需要整个文件,你也可以尽可能地以大块的形式阅读它(在极端情况下,你将内存将整个文件一次性映射到内存中).你是对的,这是因为需要更少的文件访问.
但是如果你的程序运行速度不慢,那就把它写成最快且最无bug的开发方式.早期优化是一个严重的罪.
不是真的,假设你将要使用scanf(),你对"单词"的定义与scanf()单词一致.
标准I/O库将缓冲实际磁盘读取,读取行或字将在磁盘访问方面具有基本相同的I/O开销.如果您要阅读使用的大块文件fread(),您可能会获得一些好处 - 代价是复杂性.
但是对于阅读单词,它可能是scanf()一个保护字符串格式说明符,例如%99s你的数组是否char word[100];可以正常工作并且可能更容易编码.
如果您对单词的定义比支持的定义更复杂scanf(),那么读取行和拆分可能更容易.