golang实战之truncate日志文件详解

2020-01-28 13:23:40刘景俊

函数truncateText的功能就是把文件截取到原来的一半大小,并保持按行对齐;分如下几步:

先把文件映射syscall.Mmap 到内存。 查找到中间行的位置。 然后用内置函数copy,把中间行以后的挪动到文件开始位置。 修改文件的大小file.Truncate 重置文件的偏移指针offset 取消文件映射syscall.Munmap

运行:

对于1G大小的日志文件,在我的Linux上执行时间大约是:


$ go build && time ./main
real 0m1.861s
user 0m0.335s
sys  0m0.650s

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对易采站长站的支持。