aka*_*ppa 15
我不认为有一些解决方案不同于"在读取数据时保留最新的N行"或"从最后开始并向后移动直到您读取第N行".
关键是你要根据上下文使用一个或另一个.
当tail访问随机访问文件时,或者当数据足够小以便放入内存时,"走到最后并向后"会更好.在这种情况下,运行时最小化,因为您扫描必须输出的数据(因此,它是"最佳")
当尾部通过管道或数据量巨大时,您的解决方案(保留N条最新线路)会更好.在这种情况下,另一种解决方案浪费了太多内存,因此它不实用,并且在源比尾部慢(这是可能的)扫描所有文件并不重要.
首先用于fseek查找文件结尾然后减去512并返回fseek到该偏移量,然后从那里向前读取到结束.计算换行次数,因为如果数量太少,则必须使用1024的减去偏移量进行相同的操作...但在99%的情况下,512就足够了.
这(1)避免向前读取整个文件和(2)这可能比从末尾向后读取更有效的原因是向前读取通常更快.
| 归档时间: |
|
| 查看次数: |
15720 次 |
| 最近记录: |